【问题标题】:No main manifest attribute, but I have it in my jar没有主要的清单属性,但我的罐子里有它
【发布时间】:2022-01-13 12:30:26
【问题描述】:

我正在尝试在 AWS EC2 实例上运行我的 java web 应用程序。我得到的错误是

no main manifest attribute, in app.jar

通过其他问题,我发现问题可能出在 MANIFEST.mf 文件上。我在 META-INF 文件夹下有那个文件,但是它缺少 Main Class 标记。

我使用 servlet 和其他东西开发了 Java Web 应用程序,但我没有使用 SpringBoot,我不确定我的程序的起点是什么。

这是我的 pom.xml 的一部分:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.1</version>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
    </plugin>

我以为 ma​​ven-jar-plugin 会自己解决这个问题,但不幸的是事实并非如此。

作为旁注,我尝试了战争和罐子包装。 任何想法如何使这项工作?我应该自己在 MANIFEST.mf 中硬编码一些东西吗?

我的目标是使用以下命令在 EC2 上启动我的 webapp:

java -jar app.jar

【问题讨论】:

    标签: java amazon-ec2 jar war manifest


    【解决方案1】:

    对于 maven-jar-plugin,有一个地方可以配置清单。我的项目中就有这样的

    我的项目已有多年历史,因此请查看该插件的文档:https://maven.apache.org/plugins/maven-jar-plugin/examples/manifest-customization.html

    <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.3.2</version>
          <configuration>
                 <archive>
                     <manifest>
                         <addClasspath>true</addClasspath>
                         <mainClass>webServer.main</mainClass>
                     </manifest>
                 </archive>
          </configuration>
    </plugin>  
    

    【讨论】:

    • 我不确定如何在我的情况下配置清单,因为它是一个网络应用程序并且没有 main。
    • 每个java程序都需要一个main方法。在这种情况下,它在一个也称为 main 的类中。如果您的项目运行,它将有一个 main 方法。您需要将 标记指向可以找到您的主要方法的类
    • 正如这个答案所说 -> stackoverflow.com/questions/8630496/…,Web 应用程序没有主类。 Tomcat 创建了它,但那不在我的范围内
    • 如果您无法在 tomcat 中找到指向您很可能无法使用 maven jar 插件的主文件,则必须查看 tomcat 文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2015-12-10
    • 2015-03-14
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多