AntonPanikov commented on issue #15086:
URL: https://github.com/apache/grails-core/issues/15086#issuecomment-4975819327
Just bumped into this issue. It is not simply an additional 20mb of jars, it
is breaking war file deployment into standalone tomcat container. E.g. generate
default grails forge app, run `./gradlew war`, download stock tomcat 10, and
try to run it, you will get something like:
```groovy
14-Jul-2026 21:07:07.820 SEVERE [main]
org.apache.catalina.startup.HostConfig.deployWAR Error deploying web
application archive [/ptmp/tomcat/apache-tomcat-10.1.57/webapps/grails7.war]
java.lang.IllegalStateException: Error starting child
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:619)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:588)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:679)
at
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:964)
at
org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1934)
at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
at
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:92)
at
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:125)
at
org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:795)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:449)
at
org.apache.catalina.startup.HostConfig.start(HostConfig.java:1646)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:115)
at
org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:395)
at
org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:342)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:792)
at
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:797)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1243)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1233)
at
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:328)
at
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:92)
at
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:149)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:765)
at
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:201)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
at
org.apache.catalina.core.StandardService.startInternal(StandardService.java:433)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
at
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:875)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
at
org.apache.catalina.startup.Catalina.start(Catalina.java:885)
at
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:348)
at
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
Caused by: org.apache.catalina.LifecycleException: Failed to start
component
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/grails7]]
at
org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:410)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:185)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:616)
... 35 more
Caused by: java.lang.NullPointerException: Cannot invoke
"String.split(String)" because "sources" is null
at
org.grails.cli.boot.SpringApplicationWebApplicationInitializer.getSources(SpringApplicationWebApplicationInitializer.java:63)
at
org.grails.cli.boot.SpringApplicationWebApplicationInitializer.onStartup(SpringApplicationWebApplicationInitializer.java:49)
at
org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:171)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4609)
at
org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:170)
... 36 more
```
As you can see it is trying to use
`org.grails.cli.boot.SpringApplicationWebApplicationInitializer` from
`grails-shell-cli`, instead one from `grails-web-boot`. And this one expecting
`MANIFEST.MF` with property `Spring-Application-Source-Classes`, which is not
set, here is the exception. And even if you set it, it will try to init the
spring app twice, e.g. you will see the banner from Grails first, then the
second one from Spring. The exclusion workaround is helping here, but this
needs to be fixed or at least to be mentioned in the official doc with a
workaround.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]