I am having a problem running grails generated war file on tomcat7. If/when I run the same app with grails run-app all is good and in the proper working order. The exception I get while running tomcat7 and deployed 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)
Line 71 of SwaggerDocsBuilder.groovy
rules = new BuildPathMap().build(grailsApp)
and BuildPathMap
extends
import org.codehaus.groovy.grails.web.mapping.reporting.AnsiConsoleUrlMappingsRenderer
class BuildPathMap extends AnsiConsoleUrlMappingsRenderer {
my guess is AnsiConsoleUrlMappingsRenderer
somehow depends on jline.console.history.History
but then why is it missing from the war file? Is there something that can be done during the war generation to ensure that ll dependencies are properly packaged?
Its a bug in grails.
https://jira.grails.org/browse/GRAILS-8532
could fix this with a workaround adding the following snippet to BuildConfig.groovy:
grails.war.resources = { stagingDir, args ->
copy(todir: "${stagingDir}/WEB-INF/lib", flatten: "true") {
fileset(dir: "${grailsHome}/lib", includes: "**/jline-*.jar, **/jansi-*.jar")
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With