【发布时间】:2014-10-13 21:51:49
【问题描述】:
我在 tomcat7 上运行 grails 生成的 war 文件时遇到问题。如果/当我使用 grails run-app 运行同一个应用程序时,一切都很好并且工作顺序正确。运行tomcat7并部署war时遇到的异常:
2014-08-20 09:17:28,933 [http-bio-127.0.0.1-8080-exec-7] ERROR errors.GrailsExceptionResolver - ClassNotFoundException occurred when processing request: [GET] /
jline.console.history.History. Stacktrace follows:
java.lang.ClassNotFoundException: jline.console.history.History
at org.codehaus.plugin.swagger.builder.SwaggerDocsBuilder.buildApiDeclarations(SwaggerDocsBuilder.groovy:71)
at org.codehaus.plugin.swagger.builder.SwaggerDocsBuilder.rebuild(SwaggerDocsBuilder.groovy:48)
at org.codehaus.plugin.swagger.builder.SwaggerDocsBuilder.build(SwaggerDocsBuilder.groovy:36)
at org.codehaus.grails.plugins.swaggerapidocs.SwaggerApiDocsController.resources(SwaggerApiDocsController.groovy:21)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at com.brandseye.cors.CorsFilter.doFilter(CorsFilter.java:82)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
SwaggerDocsBuilder.groovy 的第 71 行
rules = new BuildPathMap().build(grailsApp)
和BuildPathMap 扩展
import org.codehaus.groovy.grails.web.mapping.reporting.AnsiConsoleUrlMappingsRenderer
class BuildPathMap extends AnsiConsoleUrlMappingsRenderer {
我的猜测是 AnsiConsoleUrlMappingsRenderer 不知何故取决于 jline.console.history.History 但为什么它会从战争文件中丢失?在war生成期间是否可以做一些事情来确保正确打包所有依赖项?
【问题讨论】:
-
嘿@ash 你能验证我的回答是否正确吗?