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

Vig*_*dén 7 java eclipse rest spring maven

我在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.
Run Code Online (Sandbox Code Playgroud)

public static void main的位于Application.java,带有@SpringBootApplication注释.

我已经对所有Maven依赖项进行了一次双重检查.

我究竟做错了什么?

chr*_*ke- 17

最有可能的是,您使用内置的Eclipse导出器来生成jar,其中只包含该项目中实际生成的目标文件.为了拥有一个"胖"(独立可执行文件)jar,你需要使用Spring Boot Maven或Gradle插件来"重新打包"jar.

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

  • 神奇!你的答案的最后一部分为我做了诀窍,我没有意识到我必须用Maven"运行"pom.xml.我不能够感谢你. (4认同)
  • @ViggoLundén乐于助人.我建议熟悉从CLI运行Maven(就像Git一样),因为它是CI工具等使用的"官方"方法(它提供了所谓的"一步构建"),而且M2Eclipse有一个一些微妙的错误,主要与类路径有关,如果你不从CLI进行预推测试,可能会咬你. (3认同)

vim*_*hna 5

这是一个单行命令,在7/10窗口的计算机上,带有命令提示符到项目文件夹(在项目工作区内部)。我不使用Eclipse IDE POM Maven目标,但是您也可以使用Maven目标。在窗口机器上,我更喜欢cmd.exe进行导出和运行。

mvnw clean package
Run Code Online (Sandbox Code Playgroud)

基于unix内核

./mvnw clean package
Run Code Online (Sandbox Code Playgroud)

您必须进入工作空间,而不是项目根文件夹。您将看到一个maven包装器mvnw,不需要安装maven,并且在同一级别的.mvn文件夹为此提供了必要的jar。对于项目

D:\workspace\Zuteller Workspace\zusteller>mvnw clean package
Run Code Online (Sandbox Code Playgroud)

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

D:\workspace\Zuteller Workspace\zusteller>java -jar target\zusteller-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

您可以运行独立的应用程序(嵌入式Tomcat)并在localhost:8080 /您的项目中访问