从Java程序执行.jar文件

时间:2011-02-08 17:32:22

标签: java jar executable-jar

如何从java程序运行本地jar文件?

jar文件不在Java调用者程序的类路径中。

9 个答案:

答案 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)

  1. 将jar库添加到项目中
  2. 导入主类(请参阅jar文件中的清单)
  3. 使用参数

    调用静态方法main
    String 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