【发布时间】:2011-06-23 14:29:24
【问题描述】:
如何从 java 程序运行本地 jar 文件?
jar 文件不在 Java 调用程序的类路径中。
【问题讨论】:
标签: java jar executable-jar
如何从 java 程序运行本地 jar 文件?
jar 文件不在 Java 调用程序的类路径中。
【问题讨论】:
标签: java jar executable-jar
我建议你使用ProcessBuilder 并启动一个新的JVM。
以下是帮助您入门的内容:
ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
【讨论】:
start() 收到Process,它会为您提供getInputStream / getOutputStream。
ProcessBulider 构造函数添加更多参数:new ProcessBuilder("/path/to/java", "-jar", "your.jar", "arg1", "arg2");
Process proc = Runtime.getRuntime().exec("java -jar Validate.jar");
proc.waitFor();
// Then retreive the process output
InputStream in = proc.getInputStream();
InputStream err = proc.getErrorStream();
byte b[]=new byte[in.available()];
in.read(b,0,b.length);
System.out.println(new String(b));
byte c[]=new byte[err.available()];
err.read(c,0,c.length);
System.out.println(new String(c));
【讨论】:
在windows上做的另一种方法是:
Runtime.getRuntime().exec("cmd /c start jarFile");
这样您也可以设置进程的优先级(正常/低/等)
【讨论】:
首先,您的问题的描述有点不清楚。我不明白您是想从 jar 文件中加载类以在您的应用程序中使用,还是 jar 包含您要运行的主文件。我会假设它是第二个。
如果是这样,您有很多选择。 最简单的方法如下:
String filePath; //where your jar is located.
Runtime.exec(" java -jar " + filepath);
瞧... 如果您不需要运行 jar 文件而是从中加载类,请告诉我。
【讨论】:
ProcessBuilder那个一样(除非你想关闭等),而且你需要少输入。在我的事业中,我需要一个在打开罐子后自行关闭的启动器,所以这对我来说已经足够了。
您可以只使用这一行代码从任何您想要的地方运行一个 jar 文件。
Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));
在哪里
new File("your path to jar")
希望对你有帮助。
谢谢。
【讨论】:
使用参数调用静态方法 main
String args[] = {"-emaple","value"};
PortMapperStarter.main(args);
【讨论】:
要从您的 java 应用程序中运行可执行 jar,您可以从 https://docs.oracle.com/javase/tutorial/deployment/jar/examples/JarClassLoader.java 复制 JarClassLoader
像这样使用它。在这个 sn-p 中,jarUrl 是下载 jar 的 URL,例如 file:/tmp/my-jar.jar,args 是您要作为命令行参数传递给 jar 的字符串数组。
JarClassLoader loader = new JarClassLoader(jarUrl);
String main = loader.getMainClassName();
loader.invokeClass(main, args);
请记住,您现在正在将其他人的二进制文件插入到您的代码中。如果它陷入无限循环,你的线程就会挂起,如果它调用 System.exit(),你的 JVM 就会退出。
【讨论】:
1) 从环境变量中设置类路径
2) 转到您的 jar 文件所在的文件夹
3) 通过命令提示符运行以下命令
java -jar jarfilename
【讨论】: