我试图从另一个java程序运行一个jar文件。 目前的代码:
ProcessBuilder pb = new ProcessBulder("java", "-Djava=\"libs\\native\\windows\"", "-jar", "example.jar", arg1, arg2, arg3);
pb.directory(new File("my\\directory\\folder"));
Process process = pb.start();
当执行此代码时,我没有得到任何错误,似乎没有任何实际发生。
答案 0 :(得分:0)
使用ProcessBuilder.start()
启动新线程。 documentation州:
默认情况下,创建的子进程没有自己的终端或控制台。其所有标准I / O(即stdin,stdout,stderr)操作都将重定向到父进程
因此,如果您没有特别要求,那么您将永远不会看到该流程的结果(包括来自该流程的错误消息)。
更好的替代方法是不依赖ProcessBuilder
。如果您的被调用者是JVM类,只需将JAR包含在您的应用程序的类路径中,如下所示:
java -classpath ./example.jar -jar myApp.jar
然后您可以免费拨打example
方法:
public class MyApp {
public static void main(String[] args) {
Example.main(new String[] { "bla", "blubb", "blabb" });
}
}