如何从java程序运行本地jar文件?
jar文件不在Java调用者程序的类路径中。
答案 0 :(得分:41)
我建议您使用ProcessBuilder
并启动一个新的JVM。
这是让你入门的东西:
ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
答案 1 :(得分:12)
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));
答案 2 :(得分:4)
在Windows上执行的另一种方法是:
Runtime.getRuntime().exec("cmd /c start jarFile");
这样你也可以设置你的过程的优先级(正常/低/等)
答案 3 :(得分:3)
首先,您的问题描述有点不清楚。我不明白你是否要从jar文件中加载类以在你的应用程序中使用,或者jar包含你想要运行的主文件。我会假设它是第二个。
如果是这样,你在这里有很多选择。 最简单的一个是:
String filePath; //where your jar is located.
Runtime.exec(" java -jar " + filepath);
...瞧 如果您不需要运行jar文件而是从中加载类,请告诉我。
答案 4 :(得分:2)
答案 5 :(得分:2)
只需使用这一行代码,就可以从任何地方运行jar文件。
Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));
,其中
new File("your path to jar")
希望它有所帮助。
感谢。
答案 6 :(得分:0)
使用参数
调用静态方法mainString args[] = {"-emaple","value"};
PortMapperStarter.main(args);
答案 7 :(得分:0)
要从Java应用程序内部运行可执行jar,可以从https://docs.oracle.com/javase/tutorial/deployment/jar/examples/JarClassLoader.java复制JarClassLoader
像这样使用它。在此代码段中,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退出。
答案 8 :(得分:-2)
1)从环境变量
设置类路径2)转到jar文件所在的文件夹
3)通过命令提示符
运行以下命令java -jar jarfilename