2016-08-18 62 views
0

如果我在gradle build文件中將「spring-boot-starter-tomcat」插件依賴項設置爲編譯,我會收到以下錯誤消息部署到獨立的Tomcat 7服務器:Grails 3.1.10不包括來自war generation的spring-boot-starter-tomcat插件

INFO: validateJarFile(/usr/share/tomcat/webapps/ROOT/WEB-INF/lib/tomcat-embed-core-8.0.36.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class 
Aug 18, 2016 2:51:19 AM org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(/usr/share/tomcat/webapps/ROOT/WEB-INF/lib/tomcat-embed-el-8.0.36.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class 

如果我改變提供依賴於我可以部署到Tomcat,但出現以下錯誤嘗試的IntelliJ IDEA 15中運行或調試:

ERROR org.springframework.boot.SpringApplication - Application startup failed 
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [orderserver.Application]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport 
... 
Caused by: java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport 
... 
Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContext 
... 
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext 

如何從war文件生成中排除這些依賴關係,同時保留在IDEA中運行/調試的能力?

更好的方法是生成一個具有嵌入式Tomcat的獨立執行的war文件,該文件也可以部署到Tomcat容器中?

+0

我們使用創建的項目,該項目設置的「應用程序」配置解析'提供了** grailsVersion = 3.1.4 **項目,並且它可以在IDE(IntelliJ IDEA 2016.1.3 Build#IU-145.1617,2016年6月3日生成)或生產tomcat中順利運行。你確定這不是tomcat版本的不匹配問題嗎? –

+0

@Michal_Szulc是的,這是一個與tomcat版本有關的問題,因爲我在生產環境中部署到Tomcat 7,但是當我將依賴項更改爲「提供」時,我無法再在IDEA中運行。 – jamesallman

回答

0

這個問題是通過改變依賴於提供並使用「Grails的」運行/調試配置,而不是當我和IDEA 15