java - 如何在java中使用processbuilder将参数传递给jar文件

标签 java runtime executable-jar processbuilder

java -jar twitie_tag.jar <path to model file> <path to input file> <output file>

我已经在 java 进程生成器中给出了上述命令,如下所示

ProcessBuilder pb = new ProcessBuilder("java","-jar","twitie_tag.jar","models\\gate-EN-twitter.model", "newfile.txt"); 
pb.redirectErrorStream(true);
final Process process = pb.start();

InputStream stderr = process.getInputStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
          System.out.println(line);
}

process.waitFor();
System.out.println("Waiting ...");
System.out.println("Returned Value :" + process.exitValue());

但它在线程“main”中抛出异常错误

java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

如果我提供redirectoutputstream,它不会打印任何内容,它只是打印等待并且退出值为1

我有一个 jar 文件 twittejar,我在命令行中执行为 java、-jar、twitie_tag.jar、gate-EN-twitter.model、newfile.txt、> outfile.txt(输出将保存在 outfile.txt 中)。如果我给出 java、-jar、twitie_tag.jar、gate-EN-twitter.model、newfile.txt(输出将显示在该命令窗口本身中),但我需要使用 java 程序执行这些命令。

最佳答案

那么问题是您没有运行 Java 命令的进程的输出或错误流。 您可能需要使用redirectOutput 和redirectError 方法重定向进程的输出,以便您可以查看运行jar 文件的shell 是否存在问题。

关于java - 如何在java中使用processbuilder将参数传递给jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29431125/

相关文章:

java - 如何使用 Envoy 作为 Java Web 服务的负载均衡器?

xamarin - 如何根据view.Width动态自动设置FontSize?

java - jar 文件导致 NoClassDefFoundError

java - 如何在 JavaFx 或 FXML 中将多个 TilePane 放入组/列表中?

java - hibernate : dynamic-update dynamic-insert - Performance Effects

ios - 如何在 Xcode 中正确使用 iOS Runtime Headers?

linux - 完成的作业运行时间 linux

java - 我的 .jar 文件在 Java 中不工作

java - 带有打包依赖项的 Maven 构建 jar

java - 如何让 else block 在 for 循环中只执行一次