Reputation: 4372
I am building a Spring Boot application in Eclipse running JRebel and Tomcat 9. I have added JRebel nature to my project, and confirmed that the generated rebel.xml is correct. When I deploy my application to Tomcat and start it, I am greeted by this error stack.
2016-10-12 09:55:10.689 ERROR [8] [SDK-CBP] Class 'org.springframework.jmx.export.MBeanExporter' could not be processed by org.zeroturnaround.javarebel.integration.spring.beans.cbp.MBeanExporterCBP@org.apache.catalina.loader.WebappClassLoader@35310f27: org.zeroturnaround.bundled.javassist.CannotCompileException: [source error] setRegistrationBehavior(int) not found in org.springframework.jmx.export.MBeanExporter
at org.zeroturnaround.bundled.javassist.CtNewMethod.make(SourceFile:79)
at org.zeroturnaround.bundled.javassist.CtNewMethod.make(SourceFile:45)
at org.zeroturnaround.javarebel.integration.spring.beans.cbp.MBeanExporterCBP.process(MBeanExporterCBP.java:40)
at org.zeroturnaround.javarebel.integration.support.JavassistClassBytecodeProcessor.process(SourceFile:117)
at com.zeroturnaround.javarebel.rx.a(SourceFile:365)
at com.zeroturnaround.javarebel.rx.a(SourceFile:354)
at com.zeroturnaround.javarebel.rx.a(SourceFile:322)
at com.zeroturnaround.javarebel.SDKIntegrationImpl.runBytecodeProcessors(SourceFile:33)
at com.zeroturnaround.javarebel.px.transform(SourceFile:94)
at java.lang.ClassLoader.defineClass(ClassLoader.java)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2452)
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1264)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1147)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:250)
at org.springframework.util.ClassUtils.isPresent(ClassUtils.java:327)
at org.springframework.boot.autoconfigure.condition.OnClassCondition$MatchType$2.matches(OnClassCondition.java:123)
at org.springframework.boot.autoconfigure.condition.OnClassCondition.getMatchingClasses(OnClassCondition.java:93)
at org.springframework.boot.autoconfigure.condition.OnClassCondition.getMatchOutcome(OnClassCondition.java:50)
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47)
at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:102)
at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:209)
at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:539)
at org.springframework.context.annotation.ConfigurationClassParser.processDeferredImportSelectors(ConfigurationClassParser.java:482)
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:191)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:324)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:246)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681)
at org.springframework.context.support.AbstractApplicationContext.__refresh(AbstractApplicationContext.java:523)
at org.springframework.context.support.AbstractApplicationContext.jrLockAndRefresh(AbstractApplicationContext.java)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:736)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:369)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:313)
at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151)
at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131)
at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:171)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5185)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: compile error: setRegistrationBehavior(int) not found in org.springframework.jmx.export.MBeanExporter
at org.zeroturnaround.bundled.javassist.compiler.TypeChecker.atMethodCallCore(SourceFile:749)
at org.zeroturnaround.bundled.javassist.compiler.TypeChecker.atCallExpr(SourceFile:695)
at org.zeroturnaround.bundled.javassist.compiler.JvstTypeChecker.atCallExpr(SourceFile:157)
at org.zeroturnaround.bundled.javassist.compiler.ast.CallExpr.accept(SourceFile:46)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.doTypeCheck(SourceFile:242)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(SourceFile:330)
at org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(SourceFile:50)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(SourceFile:351)
at org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(SourceFile:50)
at org.zeroturnaround.bundled.javassist.compiler.MemberCodeGen.atTryStmnt(SourceFile:204)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(SourceFile:367)
at org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(SourceFile:50)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(SourceFile:351)
at org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(SourceFile:50)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atIfStmnt(SourceFile:398)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(SourceFile:355)
at org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(SourceFile:50)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(SourceFile:351)
at org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(SourceFile:50)
at org.zeroturnaround.bundled.javassist.compiler.MemberCodeGen.atTryStmnt(SourceFile:204)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(SourceFile:367)
at org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(SourceFile:50)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atStmnt(SourceFile:351)
at org.zeroturnaround.bundled.javassist.compiler.ast.Stmnt.accept(SourceFile:50)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atMethodBody(SourceFile:292)
at org.zeroturnaround.bundled.javassist.compiler.CodeGen.atMethodDecl(SourceFile:274)
at org.zeroturnaround.bundled.javassist.compiler.ast.MethodDecl.accept(SourceFile:44)
at org.zeroturnaround.bundled.javassist.compiler.Javac.compileMethod(SourceFile:169)
at org.zeroturnaround.bundled.javassist.compiler.Javac.compile(SourceFile:95)
at org.zeroturnaround.bundled.javassist.CtNewMethod.make(SourceFile:74)
... 49 more
edit: I am using JRebel for Eclipse plugin 6.5.1, and Spring Boot 2.0.0.BUILD-SNAPSHOT
Upvotes: 1
Views: 842
Reputation: 442
JRebel cannot instrument class because MBeanRegistrationSupport#setRegistrationBehavior method was removed by b5db5d commit on spring-framework development branch.
We have updated our Spring integration and JRebel Nighly build (choose standalone jar) should work fine.
Fix will be included in JRebel 6.5.2 which we plan to release next week.
Thank you for bug report, if you have any questions/issue please write to [email protected].
Upvotes: 3