【问题标题】:Open Jar without using java -jar with args不使用带有 args 的 java -jar 打开 Jar
【发布时间】:2019-05-04 21:53:33
【问题描述】:

我正在使用 jar 来运行一些代码作为程序 (OSX) 的助手。我想以编程方式打开这个 jar,并且一直在使用 ProcessBuilder 通过终端运行它。

但是,我想为 jar 提供一些参数(特别是文件位置,但这无关紧要)。我使用了java -jar jarName arg,但这不适用于没有安装 Java 工具的人。

我尝试使用open jarName --args arg,但 jar 无法识别 args。 作为测试,我现在只是使用下面的代码。

public static void main(String[] args) {
   try {
      // set a PrintStream to see the args presented
      System.setOut(
        new PrintStream(new FileOutputStream(new File(System.getProperty("user.home") + "/Desktop/argsTest.txt"))));
   } catch (FileNotFoundException e) {
      e.printStackTrace();
   }
   System.out.println(argsSize: "+args.length");

   for (String s : args)
      System.out.println(s);
}

我可以尝试其他打开罐子的方法,只要它们在所有最新系统上都可用。

我在应用程序中打包了 JRE,有没有办法使用它?

【问题讨论】:

  • 你需要安装 Java 才能运行一个 jar
  • Java 9 及更高版本的 JDK 包括 jmodjlink 工具,可让您创建一个独立的树(称为“图像”),其中包含一个运行程序的可执行文件。 jlink 的图像不需要用户安装 Java。

标签: java macos shell


【解决方案1】:

欢迎使用 StackOverFlow!

很遗憾,答案是不,你不能这样做。如果你想从 jar 中运行一些 java 代码,你将需要在机器上安装 java。具体来说,您需要 JRE 才能拥有 JVM。

但您可以在部署应用时自行提供 java。看到这个线程:

了解更多信息。

【讨论】:

  • 我在应用程序中打包了一个 JRE...有没有办法使用它来运行 jar?
  • 如果你真的打包了jre,应该可以使用java命令行工具。看看jre的安装文件夹,应该会找到bin/java.exe这个文件。小心设置 PATH 变量,以便您的程序找到 java 二进制文件!
【解决方案2】:

将 jre 与您的程序捆绑在一起。参考Bundle JRE along with executable jar

或者如果您使用的是 netbeans - 它允许您先对其进行测试。 https://netbeans.org/kb/docs/java/native_pkg.html

如何运行 - https://netbeans.org/kb/docs/java/native_pkg.html#check

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-04
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多