2016-05-03 102 views
3

我在Eclipse中使用Spring STS來創建一個簡單的基於Web的彈簧引導項目。我可以在Eclipse中運行正常,但是當我嘗試將其導出爲一個JAR文件,我得到:在Eclipse中導出Spring Boot應用程序作爲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 main void main位於Application.java,與@SpringBootApplication註解。

我已經兩次檢查了所有的Maven依賴關係一百次。

我在做什麼錯?

+0

是否運行'MVN package'給你一個工作罐子? – chrylis

+0

@chrylis我無法弄清楚如何運行'mvn'命令,bash沒有找到它。 –

回答

7

很可能,您正在使用內置的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操作。

+2

太棒了!你的答案的最後一部分對我來說是個竅門,我沒有意識到我必須用Maven「運行」pom.xml。我不能夠感謝你。 –

+2

@ViggoLundén樂於助人。我建議熟悉從CLI運行Maven(就像Git),因爲它是CI工具等使用的「官方」方法(它提供了所謂的「一步構建」),而M2Eclipse有一個一些微妙的錯誤,大部分與類路徑有關,如果你不從CLI執行預推測試,它會咬你。 – chrylis

0

這是一個單行命令,在窗口7/10機器上,命令提示符到您的項目文件夾(在您的項目工作區內)。我不使用Eclipse IDE POM maven目標,但是您也可以使用maven目標。 ON窗口機器我更喜歡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)和訪問本地主機上運行:8080 /你的項目

相關問題