首页 > 解决方案 > 在 ubuntu 上部署 grails war 文件的问题

问题描述

我有一个空的 grails 4.0.2 项目-> grails create-app testbot

这运行良好 - > grails run-app

如果我使用 tomcat 9.0.33 将它部署到 Windows 服务器上的 tomcat,这也运行良好。

但是,当我将它部署到 ubuntu 上的 tomcat 9.0.16 或 9.0.24 时,它不会启动。catalina.log 显示如下,我尝试取消注释 compile "org.springframework.boot:spring-boot-starter-tomcat" 并将其更改为提供的 "org.springframework.boot:spring-boot-starter-tomcat" 但相同问题,有什么想法吗?:

2020 年 3 月 29 日 21:57:39.308 严重 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序存档时出错 [/var/lib/tomcat9/webapps/testbot-0.1.war] java.lang.IllegalStateException:在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:720) 处启动子项时出错。 apache.catalina.core.StandardHost.addChild(StandardHost.java:705) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:978) at org.apache.catalina.startup.HostConfig$DeployWar.run( HostConfig.java:1849) 在 java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)在 org.apache。tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) at org.apache.catalina.startup.HostConfig.deployWARs( HostConfig.java:773) 在 org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427) 在 org.apache.catalina.startup.HostConfig.check(HostConfig.java:1620) 在 org.apache.catalina .startup.HostConfig.lifecycleEvent(HostConfig.java:305) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) 在 org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1151 ) 在 org.apache.catalina.core 的 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1353)。ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1357) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1335) at java.base/java.util.concurrent.Executors$RunnableAdapter.call( Executors.java:515) 在 java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) 在 java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 在 org.apache.tomcat .util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.base/java.lang.Thread.run(Thread.java:834)原因:org.apache.catalina.LifecycleException:无法在 org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase .java:440) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717) ... 24 更多: java.lang.NoSuchMethodError: 'java.lang.String org.codehaus.groovy.runtime.DefaultGroovyMethods.join(java.lang.Iterable, java.lang.String)' at org.grails.config.NavigableMap.(NavigableMap. groovy:38) at org.grails.config.NavigableMap.mergeMapEntry(NavigableMap.groovy:238) at org.grails.config.NavigableMap.mergeMapEntry(NavigableMap.groovy) at org.grails.config.NavigableMap.mergeMaps(NavigableMap.groovy:149) 在 org.grails.config.NavigableMap.merge(NavigableMap.groovy:125) 在 org.grails.config.NavigableMap.merge(NavigableMap.groovy) 在 grails.util .Metadata.loadYml(Metadata.groovy:177) 在 grails.util.Metadata.access$0(Metadata.groovy) 在 grails.util.Metadata$_loadFromDefault_closure2.doCall(Metadata.groovy:129) 在 grails.util.Metadata$_loadFromDefault_closure2 .call(Metadata.groovy) 在 org.codehaus.groovy.runtime.IOGroovyMethods.withStream(IOGroovyMethods.java:1160) 在 org.codehaus.groovy.runtime.ResourceGroovyMethods.withInputStream(ResourceGroovyMethods.java:1570) 在 grails.util。 grails.util.Metadata 中的 Metadata.loadFromDefault(Metadata.groovy:128)。grails.util.Metadata 中的 (Metadata.groovy:58)。getCurrent(Metadata.groovy:114) 在 grails.util.Environment.resolveCurrentEnvironment(Environment.java:295) 在 grails.util.Environment.cacheCurrentEnvironment(Environment.java:321) 在 grails.util.Environment.getCurrent(Environment.java) :288) 在 grails.util.Environment.(Environment.java:132) 在 java.base/java.lang.Class.forName0(Native Method) 在 java.base/java.lang.Class.forName(Class.java: 398) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray$1.run(CallSiteArray.java:65) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray$1.run(CallSiteArray.java:62) 在 java.base /java.security.AccessController.doPrivileged(Native Method) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:62) 在 org.codehaus.groovy.runtime.callsite。CallSiteArray.createCallSite(CallSiteArray.java:159) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java: 108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112) at Script1.run(Script1.groovy:26) at Script1$run.call(Unknown Source) at org.codehaus.groovy .runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:112) 在 ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:77) 在 ch.qos.logback.classic.gaffer。GafferConfigurator$run.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133 ) 在 ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:44) 在 ch.qos.logback 的 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)。 classic.gaffer.GafferUtil.runGafferConfiguratorOn(GafferUtil.java:43) 在 ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:67) 在 ch.qos.logback.classic.util.ContextInitializer.autoConfig( ContextInitializer.java:150) 在 org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84) 在 org.slf4j。impl.StaticLoggerBinder.(StaticLoggerBinder.java:55) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) at org.slf4j.LoggerFactory.getILoggerFactory( LoggerFactory.java:417) 在 ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addStatus(StatusViaSLF4JLoggerFactory.java:32) 在 ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo(StatusViaSLF4JLoggerFactory.java:20) 在 ch .qos.logback.classic.servlet.LogbackServletContainerInitializer.onStartup(LogbackServletContainerInitializer.java:32) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5135) 在 org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:183) ... 2020 年 3 月 29 日 21:57:39 还有 25 个。309 信息 [Catalina-utility-2]

标签: ubuntutomcatgrails

解决方案


默认安装的 Grails Cache 插件与 Grails 4.0.2 及更高版本中使用的较新的 Groovy 版本不兼容。

删除依赖项或排除 groovy-all 依赖项。

compile "org.grails.plugins:cache", {
    exclude group: "org.codehaus.groovy", module: "groovy-all"
}

注意:如果您只是排除依赖项,我不知道缓存插件的功能如何。


推荐阅读