----. jar Netbeans中的"No Main Manifest Attribute"

A_E*_*ric 17 java netbeans jar manifest.mf maven

我最近刚刚开始在Java中使用Maven.时间来测试我的项目,它在NetBeans窗口中运行良好,运行App.java(com.MyCompany.App)中的主类,但是当我尝试从命令行运行它时,我收到一个错误:

java -jar fileName.jar
Run Code Online (Sandbox Code Playgroud)

fileName.jar中的"No Main Manifest Attribute"

我已经尝试添加一个manifest.mf文件,指定main是什么,我也已经进入项目属性并将其添加为主文件...

这是怎么回事?

ysh*_*hab 14

我知道这是一个老问题,但万一它可以帮助任何人.

你需要maven-jar-plugin(参见Maven的例子).该插件将在构建项目时创建Rp在清单文件中提到的必需条目.

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <mainClass>fully.qualified.MainClass</mainClass>
        </manifest>
      </archive>
    </configuration>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

您需要该版本,否则,项目不会构建.fully.qualified.MainClass从包层次结构开始.

  • 这是这里最有帮助的答案,IMO 应该是这篇文章的主要答案。 (4认同)

RP-*_*RP- 10

希望您的清单文件中存在问题.一些基本检查可能会解决您的问题.

  • 它应该在 /META-INF/MANIFEST.MF
  • 内容应该有 Main-Class:com.MyCompany.App

如果您使用的是任何IDE,则应该有一个导出项目的选项runnable jar,您可以利用它来让IDE处理正确的清单.

从命令行jar cfm filename.jar Manifest.txt com/MyCompany/*.class生成具有以下内容的清单文件

Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class: com.MyCompany.App
Run Code Online (Sandbox Code Playgroud)

然后你可以运行jar命令java -jar fileName.jar.

这些类型的问题是微不足道的,但会耗费大量时间,只需确保您的文件内容和位置正确无误.

  • 在Netbeans中,运行 - >项目配置 - >自定义 - >运行 - >主类 - >浏览并选择主类.然后重新构建. (4认同)