在Eclipse中将Spring Boot应用程序导出为JAR文件

14

我正在使用 Eclipse 中的 Spring STS 创建一个简单的基于 Web 的 Spring Boot 项目。我可以在 Eclipse 中很好地运行它,但当我尝试将其导出为 JAR 文件时,出现以下错误:

rg.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

我的public static void main位于Application.java中,带有@SpringBootApplication注解。

我已经检查了所有的Maven依赖项一百次。

我做错了什么?


运行 mvn package 命令会生成一个可用的 jar 包吗? - chrylis -cautiouslyoptimistic-
@chrylis 我无法弄清如何运行 mvn 命令,bash 找不到它。 - Viggo Lundén
2个回答

26

很可能,您正在使用内置的Eclipse导出器生成您的jar包,该导出器仅包括在该项目中实际生成的目标文件。为了拥有一个“fat”(独立可执行)的jar包,您需要使用Spring Boot Maven或Gradle插件来“重新打包”jar包。

首先,请确保您的构建设置中包含repackage目标, 然后使用Maven package目标。最简单的方法是从命令行运行mvn package(您可能需要为您的操作系统安装Maven CLI包); 您还可以在Eclipse中右键单击POM并“Run As”以执行特定的Maven操作。


4
太棒了!你回答的最后一部分解决了我的问题,我没有意识到我需要用Maven运行pom.xml文件。我无法感谢你的足够多。 - Viggo Lundén
3
很高兴能为你效劳。我建议你熟悉使用命令行运行Maven(就像Git一样),因为这是CI工具等所使用的“官方”方法(它提供了所谓的“一键构建”),而M2Eclipse存在一些微妙的错误,主要涉及类路径,如果你不从命令行进行预推送测试,可能会遇到麻烦。 - chrylis -cautiouslyoptimistic-

14

这是一个单行命令,在Windows 7/10机器上,使用命令提示符进入您的项目文件夹(在您的项目工作区内)。我不使用Eclipse IDE POM maven目标来完成此操作,但您也可以在那里使用maven目标。在Windows机器上,我更喜欢使用cmd.exe进行导出和运行。

mvnw clean package

基于 Unix 内核

./mvnw clean package

您需要进入工作区,然后进入项目根文件夹。您将看到一个名为mvnw的Maven包装器,使用它您无需安装Maven,同级目录下的.mvn文件夹提供所需的jar文件。 对于一个项目

D:\workspace\Zuteller Workspace\zusteller>mvnw clean package

它将在同一级别的目标文件夹中创建zusteller-0.0.1-SNAPSHOT.jar

Translated text:

它将在同一级别的目标文件夹中创建zusteller-0.0.1-SNAPSHOT.jar

D:\workspace\Zuteller Workspace\zusteller>java -jar target\zusteller-0.0.1-SNAPSHOT.jar

您可以运行自包含应用程序(嵌入式Tomcat),并且可以通过localhost:8080/your project访问。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接