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]

Reply via email to