HotswapProjects / HotswapAgent

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

Plugin not found in the registry org.hotswap.agent.plugin.elresolver.ELResolverPlugin #174

Open ashisjena opened 7 years ago

ashisjena commented 7 years ago

I'm using HotswapAgent with Tomcat 7 and patched Java 7u79. After the server startup, it's throwing below Exception.

INFO: Server startup in 45448 ms HOTSWAP AGENT: 19:38:47.248 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.elresolver.ELResolverPlugin' initialized in ClassLoader 'java.net.URLClassLoader@6c9bc6a9'. HOTSWAP AGENT: 19:38:47.250 INFO (org.hotswap.agent.config.PluginRegistry) - Plugin 'org.hotswap.agent.plugin.elresolver.ELResolverPlugin' initialized in ClassLoader 'java.net.URLClassLoader@6c9bc6a9'. Feb 15, 2017 7:38:47 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.IllegalArgumentException: Plugin not found in the registry org.hotswap.agent.plugin.elresolver.ELResolverPlugin@5686441d] with root cause java.lang.IllegalArgumentException: Plugin not found in the registry org.hotswap.agent.plugin.elresolver.ELResolverPlugin@5686441d at org.hotswap.agent.config.PluginRegistry.getAppClassLoader(PluginRegistry.java:236) at org.hotswap.agent.annotation.handler.InitHandler.initField(InitHandler.java:42) at org.hotswap.agent.annotation.handler.AnnotationProcessor.processFieldAnnotations(AnnotationProcessor.java:118) at org.hotswap.agent.annotation.handler.AnnotationProcessor.processAnnotations(AnnotationProcessor.java:95) at org.hotswap.agent.config.PluginRegistry.initializePlugin(PluginRegistry.java:159) at javax.el.BeanELResolver.(BeanELResolver.java:66) at org.apache.jasper.el.JasperELResolver.(JasperELResolver.java:58) at org.apache.jasper.runtime.JspApplicationContextImpl.createELResolver(JspApplicationContextImpl.java:115) at org.apache.jasper.runtime.JspApplicationContextImpl.createELContext(JspApplicationContextImpl.java:88) at org.apache.jasper.runtime.PageContextImpl.getELContext(PageContextImpl.java:956) at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:941) at org.apache.jsp.index_jsp._jspService(index_jsp.java:105) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source)

skybber commented 7 years ago

Hi, look at tomcat/lib directory and send please the content of META-INF/MANIFEST.MF. Thanks.

ashisjena commented 7 years ago

Tomcat lib dir snap 2017-02-15 at 22 05 36

Manifest file contains below details

Manifest-Version: 1.0 Class-Path:

skybber commented 7 years ago

Excuse me, I didn't send the name of lib... so please send META-INF/MANIFEST.MF from el-api.jar

ashisjena commented 7 years ago

Below is the content from el-api.jar from tomcat lib directory

_Manifest-Version: 1.0 Ant-Version: Apache Ant 1.9.7 Created-By: 1.6.0_45-b06 (Sun Microsystems Inc.) X-Compile-Source-JDK: 1.6 X-Compile-Target-JDK: 1.6

Name: javax/el/ Specification-Title: Expression Language Specification-Version: 2.2 Specification-Vendor: Sun Microsystems, Inc. Implementation-Title: javax.el Implementation-Version: 2.2.FR Implementation-Vendor: Apache Software Foundation_

skybber commented 7 years ago

Remove the underscore at the end of Apache Software Foundation_ and let me know if it helps. (According unittests it should.)

ashisjena commented 7 years ago

My bad... Actually the content of Manifest file is as below.

Manifest-Version: 1.0 Ant-Version: Apache Ant 1.9.7 Created-By: 1.6.0_45-b06 (Sun Microsystems Inc.) X-Compile-Source-JDK: 1.6 X-Compile-Target-JDK: 1.6

Name: javax/el/ Specification-Title: Expression Language Specification-Version: 2.2 Specification-Vendor: Sun Microsystems, Inc. Implementation-Title: javax.el Implementation-Version: 2.2.FR Implementation-Vendor: Apache Software Foundation

I tried using italic font and the underscore appeared at the beginning and also at the end.

skybber commented 7 years ago

Could you check please if you have BeanELResolver.class in you application directories ? (you can use unzip -l '*.jar' | grep BeanELResolver in unix)

ashisjena commented 7 years ago

I checked in the project lib folder and BeanELResolver is not part of my application

$ unzip -l '*.jar' | grep BeanELResolver 34 archives were successfully processed.

I also checked in my application java files and there also BeanELResolver class is not present.

skybber commented 7 years ago

Could you conntact me at https://gitter.im/HotswapProjects/user ?