Tomcat无法开始使用Eclipse,JRebel和Spring Boot

时间:2016-10-12 14:09:33

标签: eclipse tomcat spring-boot jrebel

我正在运行JRebel和Tomcat 9的Eclipse中构建Spring Boot应用程序。我已将JRebel特性添加到我的项目中,并确认生成的rebel.xml是正确的。当我将我的应用程序部署到Tomcat并启动它时,我会受到此错误堆栈的欢迎。

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

编辑:我正在使用JRebel for Eclipse插件6.5.1和Spring Boot 2.0.0.BUILD-SNAPSHOT

1 个答案:

答案 0 :(得分:3)

JRebel无法检测类,因为{em> MBeanRegistrationSupport #setRegistrationBehavior 方法已由spring-framework开发分支上的b5db5d提交删除。

我们更新了Spring集成,JRebel Nighly build(选择独立jar)应该可以正常工作。

修复将包含在我们计划下周发布的JRebel 6.5.2中。

感谢您提供错误报告,如果您有任何疑问/问题,请写信至support@zeroturnaround.com。