我正在尝试使用appassember插件使用heroku howto创建嵌入式tomcat,使用tomcat7和oracle-java-7。
我已多次使用这些说明来转换正常工作的war文件。
当前项目是一个spring-batch-admin控制台,下面有一个单独的跑步者。我不是代码所有者,也不是那么熟悉spring-batch,但似乎很高兴被放入'普通'/ var / lib / tomcat7 / webapps。
使用自动生成的shell脚本(sh ./target/bin/webapp)启动时,出现以下错误:
ERROR - DispatcherServlet - Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath*:/META-INF/servlet/*.xml]
Offending resource: URL [jar:file:/vagrant/pairbulkdata_app/downloadjob_batch/target/repo/org/springframework/batch/spring-batch-admin-resources/1.0.0.M1/spring-batch-admin-resources- 1.0.0.M1.jar!/org/springframework/batch/admin/web/resources/servlet-config.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [../batch/module-context.xml]
Offending resource: URL [jar:file:/vagrant/pairbulkdata_app/downloadjob_batch/target/repo/org/springframework/batch/pbdDownloadXmlConfig/1.0.0.M1/pbdDownloadXmlConfig-1.0.0.M1.jar!/META-INF/servlet/service-context.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from URL [jar:file:/vagrant/pairbulkdata_app/downloadjob_batch/target/repo/org/springframework/batch/pbdDownloadXmlConfig/1.0.0.M1/pbdDownloadXmlConfig-1.0.0.M1.jar!/META-INF/servlet/../batch/module-context.xml]; nested exception is java.io.FileNotFoundException: JAR entry META-INF/servlet/../batch/module-context.xml not found in /vagrant/pairbulkdata_app/downloadjob_batch/target/repo/org/springframework/batch/pbdDownloadXmlConfig/1.0.0.M1/pbdDownloadXmlConfig-1.0.0.M1.jar
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
这似乎意味着它没有找到servlet-config.xml文件。
有趣的是,当我查看新的myApp.jar与旧的myApp.war文件时,META_INF文件的内容已被移动。 原战的相关部分是:
\META-INF\maven
\WEB-INF\classes\META-INF\stuff-to-launch-the-servlet
在胖罐子里,我得到了:
\META-INF
|-----> maven
|-----> stff-to-launch-the-servlet
和WEB-INF似乎根本没有出现。
因为它无法找到的课程是在那些被移动的东西中,我正朝着那个兔子洞走去。
为什么jar文件在不同的路径中包含META-INF?原始配置是在文件系统上,因为这不是一个单一的,应该从CLASSPATH中获取,对吗?