我一直在尝试使用以下代码。
package com.compressor;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
public class JSCompressor {
public static void main(String[] args) {
try {
String currentDir = System.getProperty("user.dir");
String[] commands = { "java", "-jar","yuicompressor.jar"};
ProcessBuilder pb = new ProcessBuilder(commands);
pb.directory(new File(currentDir));
Process p = pb.start();
BufferedReader output = new BufferedReader(new InputStreamReader(p.getInputStream()));
System.out.println("Result : " + output.readLine());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
我的项目目录如下图所示:
但是当我在eclipse中运行程序时,它给出了如下所示的null输出:
结果:null
我尝试使用谷歌搜索几个选项但没有成功。谁能指出我在这里做错了什么?。
我正在测试的jar确实是可运行的,并且在命令行中正常运行时给出输出。但我需要能够以编程方式运行这个jar。有人可以帮忙吗?。
答案 0 :(得分:1)
我想你要改变
String[] commands = { "java", "-jar","yuicompressor.jar"};
到
String[] commands = { "java", "-jar", jarPath};
因为这是yuicompressor.jar
的路径。此外,您应该使用另一个线程来读取进程输出 - 并等待进程完成。
final Process p = pb.start();
// then start a thread to read the output.
new Thread(new Runnable() {
public void run() {
BufferedReader output = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line;
System.out.print("Result : ");
while ((line = output.readLine()) != null) {
System.out.println(line);
}
}
}).start();
p.waitFor();