aop一个接口多种实现,报错 Class already mapped :

Exception in thread "main" java.lang.ExceptionInInitializerError
	at io.jboot.core.JbootCoreConfig.<init>(JbootCoreConfig.java:71)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at com.jfinal.core.JFinalFilter.createJFinalConfig(JFinalFilter.java:119)
	at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:60)
	at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
	at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
	at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:589)
	at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:554)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:596)
	at com.jfinal.server.undertow.UndertowServer.configHttp(UndertowServer.java:277)
	at com.jfinal.server.undertow.UndertowServer.doStart(UndertowServer.java:255)
	at com.jfinal.server.undertow.UndertowServer.start(UndertowServer.java:152)
	at io.jboot.app.JbootApplication.start(JbootApplication.java:40)
	at io.jboot.app.JbootApplication.run(JbootApplication.java:36)
	at com.jzdoctor.component.system.Application.main(Application.java:33)
Caused by: java.lang.RuntimeException: Class already mapped : com.jzdoctor.kit.mq.IApplicationMqMessageListener
	at com.jfinal.aop.AopFactory.addMapping(AopFactory.java:227)
	at io.jboot.aop.JbootAopFactory.initBeanMapping(JbootAopFactory.java:395)
	at io.jboot.aop.JbootAopFactory.<init>(JbootAopFactory.java:76)
	at io.jboot.aop.JbootAopFactory.<clinit>(JbootAopFactory.java:57)
	... 21 more

以前的版本支持,通过name=“”区分,升级后报错,请问如何解决?

评论区

JFinal

2019-03-14 13:34

海哥

2019-03-14 22:07

去掉 自动映射功能 @Bean 注解。通过 JFinal 注解的 @Inject(Child.class) 来进行注入。

xinqing08007

2019-03-15 10:00

@海哥 那还能动态赋值么?因为类是在程序入口 的onJbootStarted用到,怕还没注进去

海哥

2019-03-15 13:28

xinqing08007

2019-04-28 11:58

@海哥 2.0.8版本我看JbootAopFactory增加了addMapping方法,以后是可以对这种类加@Bean了?

海哥

2019-05-02 10:32

@xinqing08007 addMapping 只是用于在程序执行的过程中,可以对Mapping就行修改而已。