2014-09-01 76 views
-1

我试图从另一个Java程序运行一个jar文件。 当前代码:从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

就是Java的道路上? – MrTux 2014-09-01 12:47:45

+1

无论你的实际问题如何:你为什么不将jar添加到你的类路径中,只需调用jar的主要方法? – mabi 2014-09-01 12:47:46

+0

将jar添加到类路径是一种更好的做事方式。我在这方面有点小气,所以我没有想到这一点。谢谢你的帮助。 – redonkulasman 2014-09-01 12:58:45

回答

0

随着ProcessBuilder.start()你开始一个新的线程。 documentation指出:

默认情况下,创建的子进程没有自己的终端或控制台。它的所有标准I/O(即标准输入,标准输出,标准错误)操作将被重定向到父进程

所以,如果你没有特别要求它,你将永远不会看到这个过程的结果(这包括它启动时的错误信息)。

更好的替代方法根本不依赖于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" }); 
    } 
} 
相关问题