在Java程序中执行JAR文件

3

我希望创建一个Java程序,使用YUI压缩CSS文件。我是Java的新学习者。

我的代码如下:

import java.io.BufferedInputStream;
import java.io.IOException;

public class Run extends Object
{
    public static void main(String args[]) throws IOException, InterruptedException
    {
        System.out.println("Calling jar");

        Process p = Runtime.getRuntime().exec("java -Xmx32m -jar yui.jar in.css");    
        BufferedInputStream bis = new BufferedInputStream(p.getInputStream());
        synchronized(p) 
        {
            p.waitFor();
        }

        System.out.println(p.exitValue());

        int b = 0;
        while((b = bis.read()) > 0)
        {
            System.out.print((char)b);    
        }

        System.out.println("Called jar");
    }
}

我参考了这里

命令:

java -Xmx32m -jar yui.jar in.css

在cmd中运行正常,但在运行上述程序时没有输出。上面给出的输出是:
Calling jar
1
Called jar

请告诉我我做错了什么或者正确的方法是什么。

1
为什么不像http://blog.teamextension.com/yui-compressor-in-java-246中所示那样在您的代码中集成yui呢? - chf
1个回答

0

你之所以得到“1”,是因为流中没有任何内容可读取。

我猜你正在尝试从Eclipse或其他IDE运行文件。如果是这样,你需要将yui.jarin.css文件放置在与你的Run类相对的同一目录中。

如果你使用默认的运行配置,你只需要将文件放入你的eclipse项目的根目录中。例如,这对我来说是有效的:

Test
  src
    com
      test
        Run.java
  yui.jar
  in.css

更好的处理方法是使用绝对或相对路径,而不仅仅是指定 yui.jarin.css。为这两个相对路径创建两个变量,然后创建命令字符串。

你的意思是在src目录下吗? - user3452098
是的,我给出的示例包名是com.test,但可以在src的任何位置。 - Xinzz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接