从Java应用程序中执行Jar的最佳方法

时间:2013-09-17 13:56:33

标签: java

我正在编写一个程序,将脚本的使用转换为带有按钮的GUI来构建一些东西。脚本所做的一件事就是加载一个jar文件,并在附带参数的jar中运行一个特定的类。在脚本中它的执行方式如下:

  

java -classpath“/ path / to / some / classes /”com.company.app.App -i -e

类路径中的其他类是正在执行的类文件所在的位置。这对于应用程序的每个用户都是不同的。

我想到的方法是构建一个Process然后使用ProcessBuilder类执行它,例如:

List<String> command = Arrays.asList("java", "-classpath", "/path/to/some/classes/", "com.company.app.App", "-i", "-e");
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();

在java内部是否有更实用的方法?

2 个答案:

答案 0 :(得分:0)

如果您不需要将值传递给开始程序,则可以使用Desktop对象,例如:

Desktop.getDesktop().open(new File("/Desktop/jarfile.jar"));

简单易行的方式,我发现有用很多次。希望它有所帮助。

编辑: - 您可以使用

检查您的桌面是否也受支持
if(Desktop.isDesktopSupported()){ 
//open
}

答案 1 :(得分:0)

您可能需要询问您是否真的需要动态调用类的松散耦合。由于jar位于类路径中,因此您可以像在通常任何类中一样在代码中创建类的实例。这当然需要jar用于编译步骤,但这是正常的。

如果您确定确实需要动态调用,那么您应该使用InitialContext http://docs.oracle.com/javase/7/docs/api/javax/naming/InitialContext.html

通过JNDI进行调用

其他JNDI参考:http://docs.oracle.com/javase/tutorial/jndi/