【问题标题】:JAR File is not ExecutingJAR 文件未执行
【发布时间】:2020-12-25 05:51:10
【问题描述】:

我正在清理和构建一个项目,该项目正在其“dist”文件夹中创建其 .jar 文件。但是问题是,我无法运行它。我双击它,没有任何反应。

我已经在环境变量的“Path”选项中设置了JDK的“bin”文件夹。

我有什么遗漏的吗?我对这一切都很陌生,非常感谢您的帮助。

【问题讨论】:

  • 是可运行的jar文件吗? Jar 文件不必是可运行的...
  • 您要做的第一件事是找出失败的原因,方法是打开终端或命令窗口,并将 .jar 文件的完整路径作为最后一个参数传递给 java -jar 命令.

标签: java netbeans jar


【解决方案1】:

建议 学习如何自己制作可执行文件,而不是依赖自动生成的jar文件

Here 是一个教程。

如果是默认的 jar 文件, 很可能你必须执行

java -jar MY_AWESOME_JAR_FILE_NAME.jar

【讨论】:

    【解决方案2】:

    这有 3 个常见的原因:

    在 Windows 上,并使用 sysin/sysout

    Windows,因为显然微软无法修复古老的愚蠢,迫使应用程序要么有一个终端,在这种情况下总是会弹出一个丑陋的黑盒子,要么没有,而且以后不能制作一个。这意味着仅在 Windows 上,有 2 个 java 可执行文件:java.exejavaw.exe,唯一的区别是 javaw 没有得到一个框。但是,它没有得到一个盒子 - sysin 和 sysout 几乎什么都不做。

    默认情况下,双击 jar 会使用 javaw 启动它,这意味着如果您的应用的唯一交互是读取 System.in 并写入 System.outSystem.err,您将看不到任何内容。

    没有解决方法,除了制作一个 GUI 应用程序,或制作一个明确运行 java.exe 的批处理文件(仅限 Windows 的概念)。

    这不适用于 linux 或 mac。

    jar 文件损坏

    可运行的 jar 文件具有三个属性:

    1. jar 中有一个类,里面有一个public static void main(String[] args) 方法。
    2. 该类在 jar 的清单中被命名(完全限定),在键 Main-Class
    3. 所需的任何 deps 要么被烘焙到 jar 中,要么在另一个 jar 中,并且那些其他 jar 被命名、空格分隔并且相对于你双击的 jar 所在的目录,在清单中,在 key 下Class-Path。请注意,双击 jar 时,全局环境变量 CLASSPATH 不会执行任何操作。

    您可以检查所有这些; jars 只是 zip 文件。另外,你JDK中的jar工具可以解压它们,manifest里面就是一个名为META-INF/MANIFEST.MF的文件。你可以打开它,看看它是否配置正确。

    java安装坏了

    首先检查任何随机可运行的 jar。也许你安装了一个无头 Java。请注意,如今(从 JDK9 及更高版本开始),“最终用户”甚至不会安装 java,双击 jar 来运行它的概念基本上已经过时了。要制作“桌面”Java 应用程序,您需要发布整个 JRE(如果需要,可以使用 treeshaken)并且您负责安装程序。 JDK(从 9 开始)中有一些有限的工具可以帮助您(例如 jlink)。

    【讨论】:

      【解决方案3】:
      1. 使用 CLI 查看您的 Java 是否设置正确、jar 是否已损坏或 jar 是否与安装的 Java 版本不兼容。
      2. 确保 jar 文件与 Java 二进制文件正确关联。该指令可以找到here

      【讨论】:

        【解决方案4】:

        只需编辑清单文件,在其中添加 main 方法。如果您有任何其他参考库,只需将它们放入类路径中。 清单规范位于此处: https://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多