java - 不同模块的注释 spring 上下文的问题

标签 java spring maven-2

问候。

我基于spring注解配置制作了应用程序。这个应用程序是模块化的,我用 Maven 构建它。 我扫描应用程序以查找一个模块中的配置。


public class ClientUserDAOImplTest {<p></p>

<pre><code>private static UserDAOLocal userDAOLocal;

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

<p>...
</p>
我在另一个模块中使用@Configuration注释了类。 当我尝试构造 ApplicationContext 时,它失败并显示堆栈跟踪:


 -------------------------------------------------------------------------------
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.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.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

小修复。

问题处于测试阶段。因此,其他模块的 jar 已经准备好,并且用于第一个模块测试的 jar 没有创建并作为 .class 文件运行。

最佳答案

如果配置被注释并且位于与“package”不同的基础包中,则上下文将不会拾取它。您需要将应用程序上下文告诉 scan其他包也是如此。

编辑 抱歉错过了异常的内容。你在 jar 上签名的方式不同吗?它们需要使用相同的证书进行签名。

关于java - 不同模块的注释 spring 上下文的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814886/

相关文章:

java - 通过将 Postgres 与基于 jOOQ 的服务相结合来透明模拟 SQL Server

java - 需要从 Spring MVC 中的预定方法返回值

java - 在应用程序代码中使用 Spring 框架异常?

java - 什么是 Maven 存储库协议(protocol)?

maven - Grails:如何使用 Maven 存储库而不是 ivy-cache

java - 从 GUI 代码外部请求用户输入,在这种情况下我是否需要事件或操作来与 GUI 进行通信?

java - commons-logging-1.1.jar;无法读取 zip 文件条目

java - 父抽象类中方法的切入点

maven-2 - Nexus http代理错误

java - java中过滤字符串