繁体   English   中英

从 Java 程序执行 .jar 文件

[英]Execute .jar file from a Java program

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

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

我建议您使用ProcessBuilder并启动新的JVM。

以下是一些入门知识:

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
    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文件,而是从中加载类,请告诉我。

您可以仅使用这一行代码从任何位置运行jar文件。

    Desktop.getDesktop().open(new File("D:/FormsDesktop.jar"));

哪里

new File("your path to jar")

希望能帮助到你。

谢谢。

  1. 将jar库添加到您的项目
  2. 导入主类(请参见jar文件中的清单)
  3. 使用参数调用静态方法main

     String args[] = {"-emaple","value"}; PortMapperStarter.main(args); 

要从Java应用程序内部运行可执行jar,可以从https://docs.oracle.com/javase/tutorial/deployment/jar/examples/JarClassLoader.java复制JarClassLoader

像这样使用它。 在此代码段中, jarUrl是从其中下载jar的URL,例如文件:/tmp/my-jar.jar,而args是要作为命令行参数传递给jar的字符串数组。

JarClassLoader loader = new JarClassLoader(jarUrl);
String main = loader.getMainClassName();
loader.invokeClass(main, args);

请记住,您现在要在代码中插入其他人的二进制文件。 如果陷入无限循环,则线程挂起;如果调用System.exit(),则JVM退出。

这是我的方法,我认为它更完整:

public static Process exec(String path, String filename) throws IOException {
    String javaHome = System.getProperty("java.home");
    String javaBin = javaHome +
            File.separator + "bin" +
            File.separator + "java";

    ProcessBuilder pb = new ProcessBuilder(javaBin, "-jar", path+filename);
    return pb.start();
}

1)从环境变量设置类路径

2)转到您的jar文件所在的文件夹

3)通过命令提示符运行以下命令

java -jar jarfilename

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM