【问题标题】:Run WAR file in AWS Beanstalk在 AWS Beanstalk 中运行 WAR 文件
【发布时间】:2023-04-03 08:17:01
【问题描述】:

我用 java 和 jersey 创建了一个 Web 服务器。我也使用 MAVEN。我可以使用此命令从命令行运行项目

mvn clean verify org.codehaus.cargo:cargo-maven2-plugin:run

我的问题是我想将项目部署在 Amazon aws Elastic Beanstalk 中作为 Java 应用程序。我必须在那里上传代码,亚马逊会用这个命令执行它

java -jar mywar.war

如果我尝试使用此命令在本地运行我的项目,我会收到此错误

no main manifest attribute, in project.war

所以我认为这就是项目在 Beanstalk 中无法正常运行的原因。是否可以使用这个 java 命令运行我的项目,或者我必须使用 mvn 命令?

【问题讨论】:

  • 在像 tomcat 这样的 web 容器中部署你的战争。 war 是 web 存档,它不是 fr 命令行。
  • 这很容易使用Spring Boot,它允许您使用您在上面发布的命令 (java -jar mywar.war) 创建可以部署在常规 Web 容器中或独立启动的 war 文件。

标签: java amazon-web-services maven jersey amazon-elastic-beanstalk


【解决方案1】:

尝试在您生成的war 文件中打开清单文件,很可能它缺少Main-Class 信息。包含如下内容的清单文件示例:

Manifest-Version: 1.0
Main-Class: org.xxx.xxx.

您可以尝试在您的 pom 文件下的 maven 插件配置中添加 Main 文件信息。像这样的:

  <plugin>
    ...

    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <mainClass>fully.qualified.MainClass</mainClass>
        </manifest>
      </archive>
    ...
  </plugin>

【讨论】:

    【解决方案2】:

    这是因为你的 maven 正在使用 cargo 插件。如果您想像常规 java 应用程序一样从命令行运行它,您需要启动 Jetty 或 Tomcat 或您在嵌入式模式下使用的任何东西。这是一个描述如何从应用程序启动 Jetty 的链接。

    http://www.eclipse.org/jetty/documentation/9.4.x/embedded-examples.html

    【讨论】:

      【解决方案3】:

      Beanstalk 似乎提供Tomcat

      【讨论】:

        【解决方案4】:

        如果您希望通过java -jar 运行您的工件,请检查您在pom.xml 中有&lt;packaging&gt;jar&lt;/packaging&gt; 而不是&lt;packaging&gt;war&lt;/packaging&gt;

        还要确保您已按照https://stackoverflow.com/a/58004127/1665809 中的说明在清单中声明主类。

        【讨论】:

          猜你喜欢
          • 2017-02-05
          • 2018-04-01
          • 2021-01-29
          • 1970-01-01
          • 2016-06-20
          • 2017-03-14
          • 2016-07-07
          • 2015-08-14
          • 2018-05-23
          相关资源
          最近更新 更多