【问题标题】:Failed to load Main-class Manifest Attribute加载主类清单属性失败
【发布时间】:2012-03-16 18:07:00
【问题描述】:

执行已编译的 jar 文件时出现以下错误。我已经重新安装了我的java,但我的问题还没有解决。

Failed to load Main-class Manifest Attribute from
D:\Tools\Lodable_Creation\dist\Lodable_Creation.jar

目前由MANIFEST.MF 文件的样子。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: 1.6.0-b105 (Sun Microsystems Inc.)
Main-Class: main
X-COMMENT: Main-Class will be added automatically by build

我使用的是 Netbeans 6.9.1 IDE。

【问题讨论】:

  • 那么您的清单是什么样的?您是否尝试过指定 Main-class 属性?
  • 请使用 winzip/7zip 之类的工具打开您的 JAR 并将META-INF/Manifest.mf 内容粘贴到问题中
  • 还有,为什么jar名前有个空格?
  • 请在类名中使用第一个大写字母(Main),在方法中使用小写字母(main()

标签: java jar jvm executable-jar jvm-crash


【解决方案1】:

当我使用 JDK(在我的例子中是 1.7)开发项目并且安装的 JRE 是旧版本(1.6)时,我遇到了这个错误。如果可能,请尝试更新您的 JRE 或更改使用的 JDK,以匹配您的 JRE 版本。

【讨论】:

    【解决方案2】:

    正如 adarshr 建议的那样,JVM 无法找到该类,因为它需要 Manifest 文件的 Main-Class 属性中的完全限定名称。

    其实并不一定要指定主文件。您可以将 JAR 文件作为类路径,并提供类的完全限定名称以使用 java 运行它。

    假设您的 JAR 是 myJar.jar,完全限定的主文件是 com.user.Main。然后从命令行,转到包含您的 JAR 文件的目录并给出:-

    java -classpath myJar.jar com.user.Main
    

    这将运行 Main 类。您还需要在主类中使用(导入)的类路径中提供类(或 JAR)。

    详见this链接。

    【讨论】:

      【解决方案3】:

      为你的班级使用一个包。确保你的类看起来像这样(注意包和公共类):

      package com.foo;
      
      public class Main {
      
          public static void main(String[] args) {
          }
      }
      

      之后您可以指定Main-Class

      Main-Class: com.foo.Main
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        • 1970-01-01
        • 2019-08-08
        相关资源
        最近更新 更多