在eclipse中将Spring Boot应用程序导出为JAR文件
Posted
技术标签:
【中文标题】在eclipse中将Spring Boot应用程序导出为JAR文件【英文标题】:Exporting Spring Boot application as JAR file in eclipse 【发布时间】:2016-08-29 04:50:12 【问题描述】:我在 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 我不知道如何运行mvn
命令,bash 找不到它。
【参考方案1】:
很可能,您正在使用内置的 Eclipse 导出器来生成您的 jar,它只包含该项目中实际生成的目标文件。为了拥有一个“胖”(独立可执行)jar,您需要使用 Spring Boot Maven 或 Gradle 插件来“重新打包”该 jar。
首先,确保 you have the repackage
goal included in your build setup,然后使用 Maven package
目标。最简单的方法是从命令行运行mvn package
(您可能需要为您的操作系统安装 Maven CLI 包);您还可以右键单击 Eclipse 中的 POM 和“运行方式”以在 Eclipse 中执行特定的 Maven 操作。
【讨论】:
太棒了!!你回答的最后一部分对我有用,我没有意识到我必须用 Maven“运行”pom.xml。真是太感谢你了。 @ViggoLundén 很高兴为您提供帮助。我确实建议熟悉从 CLI 运行 Maven(就像 Git),因为它是 CI 工具等使用的“官方”方法(它提供所谓的“一步构建”),并且 M2Eclipse 有一个如果您不从 CLI 进行预推送测试,一些细微的错误(主要与类路径有关)可能会咬到您。【参考方案2】:这是一个单行命令,在窗口 7/10 机器上,带有命令提示符到您的项目文件夹(在您的项目工作区中)。我不使用 Eclipse IDE POM maven 目标,但您也可以使用 maven 目标。在窗口机器上我更喜欢 cmd.exe 来导出和运行。
mvnw clean package
基于unix内核
./mvnw clean package
您必须进入工作区,而不是进入项目根文件夹。您将看到一个 maven 包装器 mvnw,您不需要安装 maven,并且同一级别的 .mvn 文件夹为此提供了必要的 jar。 对于一个项目
D:\workspace\Zuteller Workspace\zusteller>mvnw clean package
它会在target文件夹的同级文件夹中创建zusteller-0.0.1-SNAPSHOT.jar
。
D:\workspace\Zuteller Workspace\zusteller>java -jar target\zusteller-0.0.1-SNAPSHOT.jar
您可以运行自包含应用程序(嵌入式 Tomcat)并在 localhost:8080/您的项目中访问
【讨论】:
以上是关于在eclipse中将Spring Boot应用程序导出为JAR文件的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot 中将未知请求重定向到 index.html
Jackson 在 Spring Boot Rest 应用程序中将日期更改为一天。
如何在 Eclipse 本身中运行 Spring Boot Web 应用程序?