grails - 在 tomcat7 或 grails run-app 上运行 war

标签 grails war run-app

我在 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 文件中丢失了?在war生成期间是否可以做些什么来确保正确打包所有依赖项?

最佳答案

它是 grails 中的一个错误。

https://jira.grails.org/browse/GRAILS-8532

可以通过将以下代码段添加到 BuildConfig.groovy 的解决方法来解决此问题:

grails.war.resources = { stagingDir, args ->
    copy(todir: "${stagingDir}/WEB-INF/lib", flatten: "true") {
        fileset(dir: "${grailsHome}/lib", includes: "**/jline-*.jar, **/jansi-*.jar")
    }
}

关于grails - 在 tomcat7 或 grails run-app 上运行 war,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25406412/

相关文章:

java - 导出属性时 Gradle 错误消息 "Could not find property on project"

grails - 当我运行grails run-app命令时,我停用了缓存,无法创建缓存

grails - 事件处理程序不会被触发

java - Grails 中的 servletContext 在哪里可用?

java - 是否可以在任意位置配置其他文件夹以在 war 文件中提供静态资源

android-studio - 在运行应用程序时返回错误 'UNSUPPORTED''

Flutter 热重载和热重启并不总是有效

jquery - Grails 2.4.4 中 jQuery 插件的路径问题

grails - Grails,旧版数据库无法获取正确的ID类型

tomcat - 如何在context.xml文件中引用jasperserver数据库的public schema?