Hotswap 를 위한 DCEVM 설치시 ClassNotFoundException 에러날때 jdk 버젼을 확인하자.

이클립스로 스프링 프로젝트를 하다보면
java, xml 수정 할때마다 톰캣을 재기동했던 경험.
누구나 있을 것이다.
Hotswap 기능이 간절 하다.
그래서 많이 쓰던게 jRebel 인데 2018년 7월부터 유료화가되었다.
값이 1년에 2,3만원 이면 결제 하겠는데
가격이 너무 비싸서 방법을 찾던중 오픈소스 기반의 DCEVM 를
알게 되었다.

DCEVM 설치 방법은 인터넷 검색해 보면 많이 나오니
검색해 보시길.

그런데 내가 처음 설정 할땐 에러가 나서 삽질 좀 했다.
해서 내가 해결한 방법을 공유 하려고 한다.

에러내용은 아래와 같다.

HOTSWAP AGENT: 12:10:57.772 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent {1.3.0} - unlimited runtime class redefinition.
HOTSWAP AGENT: 12:10:58.223 ERROR (org.hotswap.agent.config.PluginRegistry) - Error in plugin initial processing for plugin package 'org.hotswap.agent.plugin'
java.lang.ClassNotFoundException: org/hotswap/agent/plugin/hotswapper/HotswapperPlugin
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:278)
at org.hotswap.agent.config.PluginRegistry.scanPlugins(PluginRegistry.java:89)
at org.hotswap.agent.config.PluginManager.init(PluginManager.java:125)
at org.hotswap.agent.HotswapAgent.premain(HotswapAgent.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:382)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:397)

7월 27, 2018 12:10:58 오후 org.apache.catalina.startup.Catalina addClusterRuleSet
정보: Cluster RuleSet not found due to [java.lang.ClassNotFoundException: org/apache/catalina/ha/ClusterRuleSet]. Cluster configuration disabled.
7월 27, 2018 12:10:58 오후 org.apache.catalina.startup.Catalina addClusterRuleSet
정보: Cluster RuleSet not found due to [java.lang.ClassNotFoundException: org/apache/catalina/ha/ClusterRuleSet]. Cluster configuration disabled.
7월 27, 2018 12:10:58 오후 org.apache.tomcat.util.digester.Digester startElement
심각: Begin event threw error
java.lang.ExceptionInInitializerError
at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.<clinit>(GlobalResourcesLifecycleListener.java:66)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:383)
at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:145)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1303)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1576)
at org.apache.catalina.startup.Catalina.load(Catalina.java:617)
at org.apache.catalina.startup.Catalina.load(Catalina.java:668)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
Caused by: java.lang.NullPointerException
at org.apache.tomcat.util.modeler.Registry.loadDescriptors(Registry.java:766)
at org.apache.catalina.mbeans.MBeanUtils.createRegistry(MBeanUtils.java:1058)
at org.apache.catalina.mbeans.MBeanUtils.<clinit>(MBeanUtils.java:93)
... 28 more

java.lang.ExceptionInInitializerError
at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.<clinit>(GlobalResourcesLifecycleListener.java:66)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:383)
at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:145)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1303)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1576)
at org.apache.catalina.startup.Catalina.load(Catalina.java:617)
at org.apache.catalina.startup.Catalina.load(Catalina.java:668)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
Caused by: java.lang.NullPointerException
at org.apache.tomcat.util.modeler.Registry.loadDescriptors(Registry.java:766)
at org.apache.catalina.mbeans.MBeanUtils.createRegistry(MBeanUtils.java:1058)
at org.apache.catalina.mbeans.MBeanUtils.<clinit>(MBeanUtils.java:93)
... 28 more


해결 방법은 jdk 버젼 문제다.
내가 설치한 버젼은 jdk1.7.0_80 인데 구글을 아주 열심히 찾아 보니
버젼 문제로 보여 jdk1.7.0_67 로 낮추니 해결 되었다.
이노무 jdk 버젼 문제...

다른 사람은 나처럼 삽질 안하길...





댓글 없음:

댓글 쓰기

새로운 취미생활 RC TRX-6, UDR 영정사진들

서울에 살때는 RC카를 하고 싶어도 장소가 없어서 선뜻 시작이 어려웠다. 교외로 나가자면 차를 갖고 가야하고 최소 1시간은 나가야 할듯했다. 매번 이러다 보면 그횟수가 점점 줄어들어 포기 할까봐 시작하지 않았다. 하지만 전주로 이사와서 친구 한명...