You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Guillaume Nodet (Jira)" <ji...@apache.org> on 2022/10/20 08:11:03 UTC

[jira] [Updated] (MNG-7300) [Regression] Reloading web application (Enter) fails due to java.lang.ClassNotFoundException

     [ https://issues.apache.org/jira/browse/MNG-7300?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guillaume Nodet updated MNG-7300:
---------------------------------
    Fix Version/s: 4.0.0-alpha-2

> [Regression] Reloading web application (Enter) fails due to java.lang.ClassNotFoundException
> --------------------------------------------------------------------------------------------
>
>                 Key: MNG-7300
>                 URL: https://issues.apache.org/jira/browse/MNG-7300
>             Project: Maven
>          Issue Type: Bug
>          Components: Class Loading, Core
>    Affects Versions: 3.8.2, 3.8.3, 4.0.0-alpha-1
>         Environment: Apply to all environments
>            Reporter: Manuel Álvarez Díaz
>            Assignee: Michael Osipov
>            Priority: Major
>              Labels: class_loader, modules, multiple, restart
>             Fix For: 3.8.4, 4.0.0-alpha-1, 4.0.0-alpha-2, 4.0.0
>
>         Attachments: test-project.zip
>
>
> Reloading a web application with maven-jetty-plugin 9.4.43.v20210629, 9.4.44.v20210927 or 11.0.6 (at least) is failing when executing with apache maven 3.8.2 or 3.8.3, but it worked fine with maven 3.8.1.
> Error is different with maven-jetty-plugin 9.x vs 11.x ,but in both cases, the base error is due to java.lang.ClassNotFoundException error (different classes in each case, but classes which can be correctly loaded with starting the web context the first time). Error occurs when ENTER (default key for web context restart) is typed.
> NOTE: I had created an incidence for the jetty plugin (see [6977|https://github.com/eclipse/jetty.project/issues/6977]) but after analyzing it, it was closed pointing to a core issue.
>  
> *Steps to reproduce:*
> I have attached a simple Apache Maven project with two submodules presenting the fail in a very simple scenario:
>  * Subsytem test-project-util defines a class extending HttpServlet
>  * Subsystem test-project-service defines a class HelloServlet extending the class in the test-project-util subsystem
> NOTE: In the jax-rs project, error is different, but probably the cause is the same.
> Steps to reproduce the issue:
>  * unzip test-project.zip file
>  * cd test-project
>  * mvn install
>  * cd test-project-service
>  * mvn jetty:run
>  * ENTER (to reload application)
> After this, the following exception is raised
>  
> {{[INFO] restarting o.e.j.m.p.JettyWebAppContext@55fee662\{WS Test Service,/test-project-service,file:///D://test-project/test-project-service/src/main/webapp/,AVAILABLE}{file:///D:/test-project/test-project-service/src/main/webapp/}
> [INFO] Stopped o.e.j.m.p.JettyWebAppContext@55fee662\{WS Test Service,/test-project-service,file:///D://test-project/test-project-service/src/main/webapp/,STOPPED}{file:///D:/test-project/test-project-service/src/main/webapp/}
> [INFO] Webapp source directory = D:\\test-project\test-project-service\src\main\webapp
> [INFO] Reload Mechanic: manual
> [INFO] nonBlocking:false
> [INFO] Classes = D:\\test-project\test-project-service\target\classes
> [INFO] Context path = /test-project-service
> [INFO] Tmp directory = D:\\test-project\test-project-service\target\tmp
> [INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml
> [INFO] Web overrides =  none
> [INFO] web.xml file = file:///D://test-project/test-project-service/src/main/webapp/WEB-INF/web.xml
> [INFO] Webapp directory = D:\\test-project\test-project-service\src\main\webapp
> [INFO] Scanning elapsed time=12ms
> [WARNING] Failed startup of context o.e.j.m.p.JettyWebAppContext@55fee662\{WS Test Service,/test-project-service,file:///D://test-project/test-project-service/src/main/webapp/,UNAVAILABLE}{file:///D://test-project/test-project-service/src/main/webapp/}
> java.lang.NoClassDefFoundError: es/testproject/SimpleRestHttpServletTemplate
>     at java.lang.ClassLoader.defineClass1 (Native Method)
>     at java.lang.ClassLoader.defineClass (ClassLoader.java:1017)
>     at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:174)
>     at java.net.URLClassLoader.defineClass (URLClassLoader.java:550)
>     at java.net.URLClassLoader$1.run (URLClassLoader.java:458)
>     at java.net.URLClassLoader$1.run (URLClassLoader.java:452)
>     at java.security.AccessController.doPrivileged (Native Method)
>     at java.net.URLClassLoader.findClass (URLClassLoader.java:451)
>     at org.eclipse.jetty.webapp.WebAppClassLoader.foundClass (WebAppClassLoader.java:642)
>     at org.eclipse.jetty.webapp.WebAppClassLoader.loadAsResource (WebAppClassLoader.java:615)
>     at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:529)
>     at java.lang.ClassLoader.loadClass (ClassLoader.java:522)
>     at org.eclipse.jetty.util.Loader.loadClass (Loader.java:64)
>     at org.eclipse.jetty.servlet.BaseHolder.doStart (BaseHolder.java:89)
>     at org.eclipse.jetty.servlet.ServletHolder.doStart (ServletHolder.java:369)
>     at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:73)
>     at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0 (ServletHandler.java:730)
>     at java.util.stream.SortedOps$SizedRefSortingSink.end (SortedOps.java:357)
>     at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:485)
>     at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
>     at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining (StreamSpliterators.java:312)
>     at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
>     at java.util.stream.ReferencePipeline$Head.forEach (ReferencePipeline.java:658)
>     at org.eclipse.jetty.servlet.ServletHandler.initialize (ServletHandler.java:755)
>     at org.eclipse.jetty.servlet.ServletContextHandler.startContext (ServletContextHandler.java:379)
>     at org.eclipse.jetty.webapp.WebAppContext.startWebapp (WebAppContext.java:1449)
>     at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp (JettyWebAppContext.java:328)
>     at org.eclipse.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1414)
>     at org.eclipse.jetty.server.handler.ContextHandler.doStart (ContextHandler.java:910)
>     at org.eclipse.jetty.servlet.ServletContextHandler.doStart (ServletContextHandler.java:288)
>     at org.eclipse.jetty.webapp.WebAppContext.doStart (WebAppContext.java:524)
>     at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart (JettyWebAppContext.java:397)
>     at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:73)
>     at org.eclipse.jetty.maven.plugin.JettyRunMojo.restartWebApp (JettyRunMojo.java:468)
>     at org.eclipse.jetty.maven.plugin.ConsoleScanner.restartWebApp (ConsoleScanner.java:114)
>     at org.eclipse.jetty.maven.plugin.ConsoleScanner.checkSystemInput (ConsoleScanner.java:78)
>     at org.eclipse.jetty.maven.plugin.ConsoleScanner.run (ConsoleScanner.java:46)
> Caused by: java.lang.ClassNotFoundException: es.testproject.SimpleRestHttpServletTemplate
>     at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass (SelfFirstStrategy.java:50)
>     at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass (ClassRealm.java:271)
>     at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:247)
>     at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:239)
>     at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:538)
>     at java.lang.ClassLoader.loadClass (ClassLoader.java:522)
>     at java.lang.ClassLoader.defineClass1 (Native Method)
>     at java.lang.ClassLoader.defineClass (ClassLoader.java:1017)
>     at java.security.SecureClassLoader.defineClass (SecureClassLoader.java:174)
>     at java.net.URLClassLoader.defineClass (URLClassLoader.java:550)
>     at java.net.URLClassLoader$1.run (URLClassLoader.java:458)
>     at java.net.URLClassLoader$1.run (URLClassLoader.java:452)
>     at java.security.AccessController.doPrivileged (Native Method)
>     at java.net.URLClassLoader.findClass (URLClassLoader.java:451)
>     at org.eclipse.jetty.webapp.WebAppClassLoader.foundClass (WebAppClassLoader.java:642)
>     at org.eclipse.jetty.webapp.WebAppClassLoader.loadAsResource (WebAppClassLoader.java:615)
>     at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass (WebAppClassLoader.java:529)
>     at java.lang.ClassLoader.loadClass (ClassLoader.java:522)
>     at org.eclipse.jetty.util.Loader.loadClass (Loader.java:64)
>     at org.eclipse.jetty.servlet.BaseHolder.doStart (BaseHolder.java:89)
>     at org.eclipse.jetty.servlet.ServletHolder.doStart (ServletHolder.java:369)
>     at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:73)
>     at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$0 (ServletHandler.java:730)
>     at java.util.stream.SortedOps$SizedRefSortingSink.end (SortedOps.java:357)
>     at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:485)
>     at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
>     at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining (StreamSpliterators.java:312)
>     at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
>     at java.util.stream.ReferencePipeline$Head.forEach (ReferencePipeline.java:658)
>     at org.eclipse.jetty.servlet.ServletHandler.initialize (ServletHandler.java:755)
>     at org.eclipse.jetty.servlet.ServletContextHandler.startContext (ServletContextHandler.java:379)
>     at org.eclipse.jetty.webapp.WebAppContext.startWebapp (WebAppContext.java:1449)
>     at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp (JettyWebAppContext.java:328)
>     at org.eclipse.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1414)
>     at org.eclipse.jetty.server.handler.ContextHandler.doStart (ContextHandler.java:910)
>     at org.eclipse.jetty.servlet.ServletContextHandler.doStart (ServletContextHandler.java:288)
>     at org.eclipse.jetty.webapp.WebAppContext.doStart (WebAppContext.java:524)
>     at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart (JettyWebAppContext.java:397)
>     at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:73)
>     at org.eclipse.jetty.maven.plugin.JettyRunMojo.restartWebApp (JettyRunMojo.java:468)
>     at org.eclipse.jetty.maven.plugin.ConsoleScanner.restartWebApp (ConsoleScanner.java:114)
>     at org.eclipse.jetty.maven.plugin.ConsoleScanner.checkSystemInput (ConsoleScanner.java:78)
>     at org.eclipse.jetty.maven.plugin.ConsoleScanner.run (ConsoleScanner.java:46)
> [INFO] Restart completed at Mon Oct 11 11:32:24 CEST 2021}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)