【问题标题】:I run a maven project with the package goal. I defined the main class in the manifest but I still cannot have the jar file run in command prompt. Why?我以包目标运行一个 Maven 项目。我在清单中定义了主类,但我仍然无法在命令提示符下运行 jar 文件。为什么?
【发布时间】:2017-04-29 02:19:11
【问题描述】:

我以包为目标运行一个 Maven 项目。我有一个 .jar 文件。我在清单中定义了主类(参见下面的代码 sn-p),但我仍然无法在命令提示符下运行 jar 文件。 (java -jar jarfile-src.jar)。它在 jarfile-src.jar 中写入“没有主要清单属性”。但正如你所见,我定义了主类。它是一个名为 Main 的类,在包 'org.jis' 中。

     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>swt1</groupId>
    <artifactId>iMage</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>swt1.ub1.a1</groupId>
  <artifactId>2056751</artifactId>
  <packaging>pom</packaging>
  <build>
  <plugins>
  <plugin>
         <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
          <configuration>
          <archive>
          <manifestFile>src/main/resources/MANIFEST.MF</manifestFile>
          <manifest>
          <addClasspath>true</addClasspath>
          </manifest>
          </archive>
          </configuration>

  </plugin>
  </plugins>
  </build>
</project>

【问题讨论】:

    标签: maven manifest pom.xml executable-jar


    【解决方案1】:

    在 maven jar 插件的插件配置中使用 Main-class 属性,并确保它正确反映在生成的 manifest.mf 中。

    示例:假设 learn.maven.HelloWorld 是一个包含 main 方法的类。
    将以下代码放入您的 pom 并触发命令:mvn clean install

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.2</version>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <mainClass>learn.maven.HelloWorld</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin>
    

    您可以在生成的 jar 中看到 manifest.mf 文件如下所示。

    Manifest-Version: 1.0
    Built-By: shinchan  
    Created-By: Apache Maven 3.2.1
    Build-Jdk: 1.8.0_131
    Main-Class: learn.maven.HelloWorld
    

    使用命令运行jar:java -jar jarname.jar

    【讨论】:

    • 你有没有类似的东西:trueorg.jis.Main 我正在使用它,但仍然得到同样的错误。
    • 为什么要提供现有清单的路径?让 maven 创建自己的清单。
    • 嗨 Shinchan,如果我删除它,我仍然会遇到同样的错误。
    • @ArminBeda 用确切的细节更新了答案以放入 pom.xml 中。这应该有效。
    • 嗨Sinchan,它仍然无法正常工作。我在 pom.xml 中使用与您完全相同的行,但清单的内容仍然没有改变。你知道为什么会这样吗?
    猜你喜欢
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 2017-05-31
    • 2016-07-20
    相关资源
    最近更新 更多