我有一个spring boot / batch应用程序,在使用jenkins和xldeploy部署时会抛出错误。它是一个gradle应用程序。
当我直接在服务器上将它作为胖jar部署时,它工作正常,但是当我通过jenkins和xldeploy部署该jar时,它会给我以下错误。
创建名称为' jobOperator'的bean时出错在类路径中定义 资源 [COM /一个/ RetirementConversionImport /独立/ BatchConfiguration.class]: bean的初始化失败;嵌套异常是 org.springframework.aop.framework.AopConfigException:不能 生成类[class]的CGLIB子类 com.one.RetirementConversionImport.standalone.BatchConfiguration $ 1]: 这个问题的常见原因包括使用最终类或 不可见的阶级;嵌套异常是 org.springframework.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException - >空 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) 〜[弹簧豆-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 〜[弹簧豆-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306) 〜[弹簧豆-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 〜[弹簧豆-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 〜[弹簧豆-4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 〜[弹簧豆-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:754) 〜[弹簧豆-4.3.4.RELEASE.jar:4.3.4.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) 〜[弹簧上下文4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) 〜[弹簧上下文4.3.4.RELEASE.jar:4.3.4.RELEASE] 在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [弹簧引导1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [弹簧引导1.4.2.RELEASE.jar:1.4.2.RELEASE] 在org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [弹簧引导1.4.2.RELEASE.jar:1.4.2.RELEASE] 在com.paychex.RetirementConversionImport.standalone.RetirementConversionImport.main(RetirementConversionImport.java:85) [RetirementConversionImport.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)〜[?:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 〜[:?1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 〜[:?1.8.0_131] 在java.lang.reflect.Method.invoke(Method.java:498)〜[?:1.8.0_131] 在org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-1.4.2.RELEASE.jar:1.4.2.RELEASE]引起: org.springframework.aop.framework.AopConfigException:不能 生成类[class]的CGLIB子类 com.paychex.RetirementConversionImport.standalone.BatchConfiguration $ 1]: 这个问题的常见原因包括使用最终类或 不可见的阶级;嵌套异常是 org.springframework.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException - >空
答案 0 :(得分:1)
根本原因是类路径中有spring-boot-devtools。删除devtools解决了这个问题。所以基本上在这种情况下问题是AOP代理。由于某种原因,我们必须关闭AOP代理,这将确保它使用JDK代理,可以通过删除spring-boot-devtools jar来完成,删除它将启动它使用本机JDK代理并修复此错误。