HotswapProjects / HotswapAgent

Java unlimited redefinition of classes at runtime.
GNU General Public License v2.0
2.32k stars 491 forks source link

ERROR - Could not load [javax.enterprise.util.AnnotationLiteral] #315

Open luiscla27 opened 5 years ago

luiscla27 commented 5 years ago

AFAIK Hot Swap is working fine with me... classes are being correctly reloaded. How ever, when i change some code from a spring controller (anywhere) I have this problem...

03-Sep-2019 17:07:56.473 INFORMACIÓN [JDWP Transport Listener: dt_shmem] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [javax.enterprise.util.AnnotationLiteral].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [javax.enterprise.util.AnnotationLiteral].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1368)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:154)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:136)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)
        at org.hotswap.agent.javassist.ClassPool.toClass(ClassPool.java:1143)
        at org.hotswap.agent.javassist.CtClass.toClass(CtClass.java:1316)
        at org.hotswap.agent.util.classloader.ClassLoaderDefineClassPatcher.patch(ClassLoaderDefineClassPatcher.java:68)
        at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:166)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
        at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
03-Sep-2019 17:07:56.503 INFORMACIÓN [JDWP Transport Listener: dt_shmem] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [javax.enterprise.util.AnnotationLiteral].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [javax.enterprise.util.AnnotationLiteral].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1368)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:154)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:136)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)
        at org.hotswap.agent.javassist.ClassPool.toClass(ClassPool.java:1143)
        at org.hotswap.agent.javassist.CtClass.toClass(CtClass.java:1316)
        at org.hotswap.agent.util.classloader.ClassLoaderDefineClassPatcher.patch(ClassLoaderDefineClassPatcher.java:68)
        at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:166)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
        at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
luiscla27 commented 5 years ago

Hello, i think this error may be caused due a wrong configuration, i had configured both Tomcat and my Maven project with HotswapAgent:

Maven project: image

Tomcat: image

The error seems to be fixed after i removed Tomcat configuration, i think you can close this issue by confirming that my configuration was wrong.

skybber commented 5 years ago

Is the hotswap working after the option removal? There should be -XXaltjvm=dcevm .. options visible in running Tomcat process, otherwise the hotswap is turned off.

luiscla27 commented 5 years ago

Yes. It is working, classes are being reloaded with no problems (see attached video).

And no; is not visible at the tomcat process (Java): image

I can see the HotSwapAgent messages being printed when compilation starts using MAVEN_OPTS...:


cd E:\_Lu15_MainFolder\BnextQMS-Desarrollo\QMS_2.13.3.B1; "MAVEN_OPTS=-XXaltjvm=dcevm -javaagent:E:\\Java\\hotswap-agent-1.3.0.jar" JAVA_HOME=E:\\Java\\jdk1.8.0_181 M2_HOME=C:\\apache-maven-3.6.0 cmd /c "\"\"C:\\apache-maven-3.6.0\\bin\\mvn.cmd\" -Dnetbeans.deploy.debugmode=true -Dnetbeans.deploy=true -Dmaven.ext.class.path=E:\\NetBeans\\NB-10.0\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar -Dfile.encoding=UTF-8 -PDevelopment package\""
HOTSWAP AGENT: 10:59:59.037 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {1.3.0} - unlimited runtime class redefinition.
HOTSWAP AGENT: 10:59:59.334 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [Hotswapper, JdkPlugin, AnonymousClassPatch, ClassInitPlugin, WatchResources, Hibernate, Hibernate3JPA, Hibernate3, Spring, Jersey1, Jersey2, Jetty, Tomcat, ZK, Logback, Log4j2, MyFaces, Mojarra, Omnifaces, Seam, ELResolver, WildFlyELResolver, OsgiEquinox, Owb, Proxy, WebObjects, Weld, JBossModules, ResteasyRegistry, Deltaspike, GlassFish, Vaadin]
BuildTimeEventSpy is registered.
Scanning for projects...

HotSwap.zip

skybber commented 5 years ago

Looks ok. I'm closing this issue.

luiscla27 commented 5 years ago

You were right @skybber. Can you please reopen the issue?

HotSwapAgent is not fully working without -XXaltjvm=dcevm ..., does this means that this issue is related to DCEVM?

skybber commented 5 years ago

You need dcevm+hotswapgent to use advanced hotswap.

luiscla27 commented 5 years ago

Thank you, Every time the issue seems to be triggered after the java.lang.IllegalStateException, here some more stacktraces... that also started with Illegal access, is there anything that am doing wrong?

06-Sep-2019 12:37:03.306 INFORMACIÓN [JDWP Transport Listener: dt_shmem] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [org.apache.deltaspike.core.api.config.view.metadata.ViewConfigResolver].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [org.apache.deltaspike.core.api.config.view.metadata.ViewConfigResolver].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1368)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:154)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:136)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)
        at org.hotswap.agent.javassist.ClassPool.toClass(ClassPool.java:1143)
        at org.hotswap.agent.javassist.CtClass.toClass(CtClass.java:1316)
        at org.hotswap.agent.util.classloader.ClassLoaderDefineClassPatcher.patch(ClassLoaderDefineClassPatcher.java:68)
        at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:166)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
        at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
06-Sep-2019 12:37:03.316 INFORMACIÓN [JDWP Transport Listener: dt_shmem] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [hotswap-agent.properties].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [hotswap-agent.properties].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
        at org.apache.catalina.loader.WebappClassLoaderBase.findResources(WebappClassLoaderBase.java:979)
        at org.apache.catalina.loader.WebappClassLoaderBase.getResources(WebappClassLoaderBase.java:1080)
        at org.hotswap.agent.config.PluginConfiguration.loadConfigurationFile(PluginConfiguration.java:102)
        at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:61)
        at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:171)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
        at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
HOTSWAP AGENT: 12:37:03.372 ERROR (org.hotswap.agent.util.HotswapTransformer) - Error transforming class 'bnext/ibm/maximo/monitor/MaximoMonitor'.
java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [hotswap-agent.properties].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
    at org.apache.catalina.loader.WebappClassLoaderBase.findResources(WebappClassLoaderBase.java:979)
    at org.apache.catalina.loader.WebappClassLoaderBase.getResources(WebappClassLoaderBase.java:1080)
    at org.hotswap.agent.config.PluginConfiguration.loadConfigurationFile(PluginConfiguration.java:102)
    at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:61)
    at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:171)
    at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
    at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
    at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
    at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
skybber commented 5 years ago

It looks like the IllegalStateException is thrown after application is stopped, look at:

https://github.com/apache/tomcat/blob/master/java/org/apache/catalina/loader/WebappClassLoaderBase.java#L1385

luiscla27 commented 5 years ago

Application has not stopped,

That exception is wrong 😲 It seems that it'll be trowed at any of the following states (see here):

So this may be Tomcat bug? i think that the issue is caused due to the fact that HotSwapAgent tries to load resources while initializing something inside tomcat (?)

Whatever the reason i think their validation should only consider the STOP related status... something like this (my guess is that status while the error occurs is related to INIT stuff):

protected void checkStateForResourceLoading(String resource) throws IllegalStateException {
    // It is not permitted to load resources once the web application has
    // been stopped.
    if (
        state == LifecycleState.STOPPING
        || state == LifecycleState.STOPPED // add every invalid status...
    ) {
        String msg = sm.getString("webappClassLoader.stopped", resource);
        IllegalStateException ise = new IllegalStateException(msg);
        log.info(msg, ise);
        throw ise;
    }
}

Still... maybe the solution would be that HotSwapAgent waits for Tomcat to have a valid state

skybber commented 5 years ago

As you have written and as I understand, the problem is after redefinition of some class, not on start of Tomcat. It looks like you have autoreloading ON in Tomcat setup. Make sure you have disabled auto-deploy. I have similar problem in Eclipse if I forget to disable it.

luiscla27 commented 4 years ago

Yes @skybber, the problem is after redifinition of some class, also is not the case about autoreloading being turned ON.

I've attached a video of the class redefinition and the autoreloading settings:

HotswapAgent - Issue315.zip

Here's the stacktrace that is shown at the video:

24-Sep-2019 15:44:28.014 INFORMACIÓN [JDWP Transport Listener: dt_shmem] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [javax.enterprise.util.AnnotationLiteral].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [javax.enterprise.util.AnnotationLiteral].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1368)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:154)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:136)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)
        at org.hotswap.agent.javassist.ClassPool.toClass(ClassPool.java:1143)
        at org.hotswap.agent.javassist.CtClass.toClass(CtClass.java:1316)
        at org.hotswap.agent.util.classloader.ClassLoaderDefineClassPatcher.patch(ClassLoaderDefineClassPatcher.java:68)
        at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:166)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
        at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
24-Sep-2019 15:44:28.042 INFORMACIÓN [JDWP Transport Listener: dt_shmem] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [javax.enterprise.util.AnnotationLiteral].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [javax.enterprise.util.AnnotationLiteral].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1368)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:154)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:136)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)
        at org.hotswap.agent.javassist.ClassPool.toClass(ClassPool.java:1143)
        at org.hotswap.agent.javassist.CtClass.toClass(CtClass.java:1316)
        at org.hotswap.agent.util.classloader.ClassLoaderDefineClassPatcher.patch(ClassLoaderDefineClassPatcher.java:68)
        at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:166)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
        at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
24-Sep-2019 15:44:28.121 INFORMACIÓN [JDWP Transport Listener: dt_shmem] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [org.apache.deltaspike.core.api.config.view.metadata.ViewConfigResolver].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [org.apache.deltaspike.core.api.config.view.metadata.ViewConfigResolver].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1368)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass3(DefineClassHelper.java:154)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass2(DefineClassHelper.java:136)
        at org.hotswap.agent.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:95)
        at org.hotswap.agent.javassist.ClassPool.toClass(ClassPool.java:1143)
        at org.hotswap.agent.javassist.CtClass.toClass(CtClass.java:1316)
        at org.hotswap.agent.util.classloader.ClassLoaderDefineClassPatcher.patch(ClassLoaderDefineClassPatcher.java:68)
        at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:166)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
        at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
24-Sep-2019 15:44:28.129 INFORMACIÓN [JDWP Transport Listener: dt_shmem] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [hotswap-agent.properties].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [hotswap-agent.properties].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
        at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
        at org.apache.catalina.loader.WebappClassLoaderBase.findResources(WebappClassLoaderBase.java:979)
        at org.apache.catalina.loader.WebappClassLoaderBase.getResources(WebappClassLoaderBase.java:1080)
        at org.hotswap.agent.config.PluginConfiguration.loadConfigurationFile(PluginConfiguration.java:102)
        at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:61)
        at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:171)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
        at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
        at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
        at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
        at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
HOTSWAP AGENT: 15:44:28.172 ERROR (org.hotswap.agent.util.HotswapTransformer) - Error transforming class 'qms/activity/rest/ActivityTypeController'.
java.lang.IllegalStateException: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load [hotswap-agent.properties].  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
    at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1380)
    at org.apache.catalina.loader.WebappClassLoaderBase.findResources(WebappClassLoaderBase.java:979)
    at org.apache.catalina.loader.WebappClassLoaderBase.getResources(WebappClassLoaderBase.java:1080)
    at org.hotswap.agent.config.PluginConfiguration.loadConfigurationFile(PluginConfiguration.java:102)
    at org.hotswap.agent.config.PluginConfiguration.<init>(PluginConfiguration.java:61)
    at org.hotswap.agent.config.PluginManager.initClassLoader(PluginManager.java:171)
    at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:146)
    at org.hotswap.agent.annotation.handler.PluginClassFileTransformer.transform(PluginClassFileTransformer.java:89)
    at org.hotswap.agent.util.HotswapTransformer.transform(HotswapTransformer.java:184)
    at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
    at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)

HOTSWAP AGENT: 15:45:00.004 INFO (org.hotswap.agent.plugin.spring.getbean.DetachableBeanHolder) - Bean 'com.sun.proxy.$Proxy479' loaded
HOTSWAP AGENT: 15:45:00.011 INFO (org.hotswap.agent.plugin.spring.getbean.DetachableBeanHolder) - Bean 'com.sun.proxy.$Proxy479' loaded

Changes are being reloaded correclty,

luiscla27 commented 4 years ago

(closed by mistake)

As you have written and as I understand, the problem is after redefinition of some class, not on start of Tomcat. It looks like you have autoreloading ON in Tomcat setup. Make sure you have disabled auto-deploy. I have similar problem in Eclipse if I forget to disable it.

And yes, the error is thrown after some class redefinition.

skybber commented 4 years ago

Do you see following line in your logs?

Plugin 'org.hotswap.agent.plugin.tomcat.TomcatPlugin' initialized in ClassLoader 'ParallelWebappClassLoader

how many times?

luiscla27 commented 4 years ago

I haven't seen your message until today @skybber!

And yes, i see that line in my logs, it appears 7 times, here's the complete initialization log, is it expected to run that many times??

Today my JVM had a fatal error after one heavy hotswap, here's the crash log, i think it's related to same issue.

skybber commented 4 years ago

Do you have the original problem yet?

luiscla27 commented 4 years ago

Yes @skybber, everytime i save changes the same Could not load [javax.enterprise.util.AnnotationLiteral] error is shown

skybber commented 4 years ago

I see it now. According log, you are starting following Tomcat's default applications:

docs, examples, host-manager, manager

disable them all, then you should not have this problem.

luiscla27 commented 4 years ago

Thanks @skybber,

I've just tried that and i was able to undeploy: docs, examples and host-manager, i wasn't able to undeploy manager, it seems that NetBeans requires the manager application to start tomcat...

By removing manually the \tomcat\webapps\manager folder, NetBeans got stuck trying to start tomcat, so i tried just stopping it: image

But that didn't work either, the following error is shown: image

I did the test again but again everytime i save changes the same Could not load [javax.enterprise.util.AnnotationLiteral] error is shown (...)

skybber commented 4 years ago

There should be only your application in Tomcat otherwise you will have this problem.

luiscla27 commented 4 years ago

Currently my application runs using the Java EE feature of NetBeans, i think the embedded version doesn't requires manager to be there...

So I guess the only way for running netbeans + tomcat + hotswap is that tomcat should be embedded with the application, can you please confirm this is a requirement for hotswap?

skybber commented 4 years ago

It is definitely not required. I'm not expert on netbeans, but my colleagues are using netbeans+tomcat+hotswap without problems. Did you try to follow setup from http://hotswapagent.org/mydoc_setup_netbeans.html ?

luiscla27 commented 4 years ago

Yes, that's the configuration i have, you can see my full settings here

A colleague tried to run the same configuration with the same project from another machine and the error wasn't thrown (he also didn't removed the manager application), so i guess is something environment related... by now i'll try to find the environment differences.