我在Eclipse中使用Spring STS来创建一个简单的基于Web的弹簧启动项目。我可以在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依赖项进行了一百次双重检查。
我做错了什么?
答案 0 :(得分:15)
最有可能的是,您使用内置的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和“Run As”以从Eclipse中执行特定的Maven操作。
答案 1 :(得分:1)
这是一个单行命令,在窗口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
它会在同一级别的目标文件夹中创建zusteller-0.0.1-SNAPSHOT.jar
。
D:\workspace\Zuteller Workspace\zusteller>java -jar target\zusteller-0.0.1-SNAPSHOT.jar
您可以运行自包含的应用程序(嵌入式Tomcat)并访问localhost:8080 /您的项目