【发布时间】:2020-03-29 09:07:35
【问题描述】:
我有一个空的 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 。战争] java.lang.IllegalStateException:错误启动子 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:720) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705) 在 org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:978) 在 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) 在 java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) 在 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.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1353) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1357) 在 org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1335) 在 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:无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/testbot-0.1]] 在 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)' 在 org.grails.config.NavigableMap.(NavigableMap.groovy:38) 在 org.grails.config.NavigableMap.mergeMapEntry(NavigableMap.groovy:238) 在 org.grails.config.NavigableMap.mergeMapEntry(NavigableMap.groovy) 在 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.Metadata.loadFromDefault(Metadata.groovy:128) 在 grails.util.Metadata.(Metadata.groovy:58) 在 grails.util.Metadata.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(本机方法) 在 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(本机方法) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:62) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:159) 在 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) 在 Script1.run(Script1.groovy:26) 在 Script1$run.call(未知来源) 在 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(未知来源) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) 在 ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:44) 在 ch.qos.logback.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) 在 org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) 在 org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) 在 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) ... 25 更多 2020 年 3 月 29 日 21:57:39.309 信息 [Catalina-utility-2]
【问题讨论】:
-
在黑暗中射击:tomcat 是否安装在系统范围内?也安装了groovy?你的 tomcat 是否选择了发行版附带的一些古老的 groovy 版本,并且在战争中更喜欢它而不是你的打包版本?
-
另外,你用的是哪个java安装?
-
Tomcat 9.0.24 和 openjdk 11.0.6