【问题标题】:Jar executable can't find main class - weird oneJar 可执行文件找不到主类 - 奇怪的一个
【发布时间】:2012-05-01 07:46:15
【问题描述】:

您好,我有一个奇怪的问题。我正在用 eclipse 打包一个应用程序以生成一个可执行的 jar 文件,当我运行它时出现错误 “错误找不到主类 [...]”。

当我从命令行示例运行相同的包时

java -jar app.jar

程序启动。

奇怪的是,该错误仅发生在 Java 7 环境中的应用程序中。

如果我将项目设置为 java 6,一切正常。

我应该怎么做才能运行 Java 7 jar 可执行文件?

感谢您的帮助。

【问题讨论】:

    标签: java jar executable


    【解决方案1】:

    检查你的 jre 的版本,如果它是 jre6,那么尝试将你的 jre 更新到 jre7 可能会出现问题,它可以做一个技巧..

    【讨论】:

    • 我安装了 x86 x64 jres 6 和 7 我尝试使用 javaw.exe 6 和 javaw.exe 7 启动 jar 并且错误是相同的。
    • 尝试使用 e 选项编译 e.g.jar cfe app.jar pack.Test pack/Test.class
    • 什么都没有改变:/我会尝试卸载所有java并重新安装,看看是否有帮助
    • 这对我有用,Error can't find main class 可能是因为 Windows 试图使用 JRE6 运行 .jar,但 .jar 是在我的 IDE 中使用 JDK7 构建的。
    【解决方案2】:

    你需要在manifest文件中设置主类

    清单文件示例

    Manifest-Version: 1.0
    Created-By: 1.3.1 (Sun Microsystems, Inc.)
    Main-Class: com.package.MainClassName
    Class-Path: oc4j.jar
    

    确保您已在示例 jar 文件中设置了所有这些内容

    【讨论】:

      【解决方案3】:

      当 JVM 无法找到与 Jar 文件关联的主类时会出现此问题,JVM 使用 Manifest.mf 中的 Main-Class 属性来识别关联的主类

      似乎您错过了将 Main-Class 属性添加到用于创建 JAr 的清单文件中,http://www.skylit.com/javamethods/faqs/createjar.html 可能会有所帮助

      【讨论】:

        【解决方案4】:

        默认情况下,jar 是不可执行的

        Java 档案更常用作库,其中jar 格式将代码压缩到单个文件夹中。此类代码通常不作为应用程序(独立)运行,但可以通过Manifest file 将 jar 文件转换为可执行应用程序。

        只需创建一个 Manifest 文件,指明哪个类包含“main”方法,以使您的 jar 可执行并将 Manifest 包含在您的 .jar 中

        【讨论】:

        • 我这样做了,但还是一样,只有当我使用 java 7 编译项目时才会出现此错误,真的不知道该怎么办:/
        猜你喜欢
        • 2015-08-18
        • 2016-09-29
        • 2016-02-16
        • 2016-11-16
        • 2017-12-10
        • 2018-06-29
        • 1970-01-01
        • 2011-05-06
        • 2012-11-05
        相关资源
        最近更新 更多