开发者

Problem with annotation spring context with differ modules

开发者 https://www.devze.com 2023-01-18 10:43 出处:网络
Greeteng. I made application based on spring annotation configuration. This application is moduled, i\'m build it with maven.

Greeteng.

I made application based on spring annotation configuration. This application is moduled, i'm build it with maven. I scan application to find Configurations in one module.


public class ClientUserDAOImplTest {

private static UserDAOLocal userDAOLocal;

@BeforeClass
public static void start() {
    beginDate = new Date();
    ApplicationContext ac = new AnnotationConfigApplicationContext("package");
    userDAOLocal = ac.getBean(UserDAOLocal.class);
}

...

I made class annotated with @Configuration in another module. When i try to construct ApplicationContext, it fails with so stacktrace:


 -------------------------------------------------------------------------------
Test set: package.ClientUserDAOImplTest
 -------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.09 sec (AnnotationConfigApplicationContext.java:75)
        at package.UserDAOImplTest.start(ClientUserDAOImplTest.java:29)
        at sun.reflect.NativeMetho开发者_Go百科dAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
        at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
        at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
        at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:237)
        at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
        at net.sf.cglib.proxy.Enhancer.createClass(Enhancer.java:317)
        at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:118)
        at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:89)
        at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:238)
        ... 26 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:384)
        at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:219)
        ... 31 more
Caused by: java.lang.SecurityException: class "package.ClientInitConfig$$EnhancerByCGLIB$$cee25681"'s signer information does not match signer information of other classes in the same package
        at java.lang.ClassLoader.checkCerts(ClassLoader.java:807)
        at java.lang.ClassLoader.preDefineClass(ClassLoader.java:488)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:626)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        ... 37 more

litte FIX.

Problem is at test stage. So, jar for other module is already ready and jar for tests of first module is not created and run as just .class files.


If the configuration is annotated and in a different base package than "package", the context will not pick it up. You need to tell the app context to scan the other packages as well.

EDIT Sorry missed the guts of the exception. Did you sign the jars differently? They need to be signed with the same cert.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号