2016-03-29 51 views
0

我正在开发一个基于spring-boot 1.2.5的项目。Maven依赖spring引导和Junit

当我使用maven安装脚本执行测试时,它们会以成功的方式传递。 但是当我尝试在Eclipse中的JUnit 执行我的测试中,我有以下问题:

java.lang.SecurityException异常:类“org.hamcrest.Matchers”的签名者 信息不匹配 中的其他类的签名者信息 java.lang.ClassLoader.checkCerts(ClassLoader.java:895)at java.lang.ClassLoader.preDefineClass(ClassLoader.java:665)at java.lang.ClassLoader。 defineClass(ClassLoader.java:758)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.U RLClassLoader.defineClass(URLClassLoader.java:455)at java.net.URLClassLoader.access $ 100(URLClassLoader.java:73)at java.net.URLClassLoader $ 1.run(URLClassLoader.java:367)at java.net。 URLClassLoader的在 java.security.AccessController.doPrivileged(本机方法)在 java.net.URLClassLoader.findClass(URLClassLoader.java:360)在 java.lang.ClassLoader.loadClass($ 1.run(URLClassLoader.java:361) ClassLoader.java:424)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at net.aptea.sba.tests。 controllers.TestClientController.listClient(TestClientController.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke 0(本机方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke( Method.java:483)在 org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50) 在 org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 在 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 在 org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:73) 在 有机.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82) 在 org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:73) 的组织。 junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:224) 在 org.springframework.test.context.junit4.SpringJUnit4 ClassRunner.runChild(SpringJUnit4ClassRunner.java:83) at org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)at org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)at org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)at org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner。 java:268)at org.springframework.test。context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 在 org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68) 在org.junit.runners.ParentRunner .RUN(ParentRunner.java:363)在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( JUnit4TestReference.java:86) 在 org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( RemoteTestRunner.java:459) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

我认为这是春天开机框架内扶养的问题:

Dependancy hirarchy

所以我加了这个followin摹线在我的pom.xml:

<dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-core</artifactId> 
     <version>1.9.5</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.hamcrest</groupId> 
       <artifactId>hamcrest-core</artifactId> 
      </exclusion> 
     </exclusions> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.hamcrest</groupId> 
       <artifactId>hamcrest-core</artifactId> 
      </exclusion> 
     </exclusions> 
     <scope>test</scope> 
    </dependency> 

MVN依赖:树结果:

[INFO] net.aptea.sba:sba-web:war:0 
[INFO] +- net.aptea.sba:sba-metier-dao:jar:0:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.2.5.RELEASE:compile 
[INFO] | | +- org.springframework.boot:spring-boot-starter-aop:jar:1.2.5.RELEASE:compile 
[INFO] | | | +- org.aspectj:aspectjrt:jar:1.8.6:compile 
[INFO] | | | \- org.aspectj:aspectjweaver:jar:1.8.6:compile 
[INFO] | | +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.2.5.RELEASE:compile 
[INFO] | | | +- org.springframework:spring-jdbc:jar:4.1.7.RELEASE:compile 
[INFO] | | | +- org.apache.tomcat:tomcat-jdbc:jar:8.0.23:compile 
[INFO] | | | | \- org.apache.tomcat:tomcat-juli:jar:8.0.23:compile 
[INFO] | | | \- org.springframework:spring-tx:jar:4.1.7.RELEASE:compile 
[INFO] | | +- org.hibernate:hibernate-entitymanager:jar:4.3.10.Final:compile 
[INFO] | | | +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile 
[INFO] | | | +- org.hibernate:hibernate-core:jar:4.3.10.Final:compile 
[INFO] | | | | +- antlr:antlr:jar:2.7.7:compile 
[INFO] | | | | \- org.jboss:jandex:jar:1.1.0.Final:compile 
[INFO] | | | +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | | | | \- xml-apis:xml-apis:jar:1.0.b2:compile 
[INFO] | | | +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.5.Final:compile 
[INFO] | | | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile 
[INFO] | | | \- org.javassist:javassist:jar:3.18.1-GA:compile 
[INFO] | | +- javax.transaction:javax.transaction-api:jar:1.2:compile 
[INFO] | | +- org.springframework:spring-orm:jar:4.1.7.RELEASE:compile 
[INFO] | | +- org.springframework.data:spring-data-jpa:jar:1.7.3.RELEASE:compile 
[INFO] | | | +- org.springframework.data:spring-data-commons:jar:1.9.3.RELEASE:compile 
[INFO] | | | \- org.slf4j:jcl-over-slf4j:jar:1.7.12:compile 
[INFO] | | \- org.springframework:spring-aspects:jar:4.1.7.RELEASE:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter-security:jar:1.2.5.RELEASE:compile 
[INFO] | | +- org.springframework:spring-beans:jar:4.1.7.RELEASE:compile 
[INFO] | | +- org.springframework:spring-context:jar:4.1.7.RELEASE:compile 
[INFO] | | +- org.springframework:spring-expression:jar:4.1.7.RELEASE:compile 
[INFO] | | +- org.springframework.security:spring-security-config:jar:3.2.7.RELEASE:compile 
[INFO] | | | +- aopalliance:aopalliance:jar:1.0:compile 
[INFO] | | | \- org.springframework.security:spring-security-core:jar:3.2.7.RELEASE:compile 
[INFO] | | +- org.springframework.security:spring-security-web:jar:3.2.7.RELEASE:compile 
[INFO] | | \- org.springframework:spring-aop:jar:4.1.7.RELEASE:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter-mail:jar:1.2.5.RELEASE:compile 
[INFO] | | +- org.springframework:spring-context-support:jar:4.1.7.RELEASE:compile 
[INFO] | | \- com.sun.mail:javax.mail:jar:1.5.4:compile 
[INFO] | |  \- javax.activation:activation:jar:1.1:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.2:compile 
[INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.0:compile 
[INFO] | | \- com.fasterxml.jackson.core:jackson-core:jar:2.6.2:compile 
[INFO] | +- org.postgresql:postgresql:jar:9.4-1202-jdbc42:compile 
[INFO] | +- com.dropbox.core:dropbox-core-sdk:jar:1.8.1:compile 
[INFO] | +- org.apache.pdfbox:pdfbox:jar:1.8.10:compile 
[INFO] | | +- org.apache.pdfbox:fontbox:jar:1.8.10:compile 
[INFO] | | +- org.apache.pdfbox:jempbox:jar:1.8.10:compile 
[INFO] | | \- commons-logging:commons-logging:jar:1.1.1:compile 
[INFO] | +- com.lowagie:itext:jar:2.1.7:compile 
[INFO] | | +- bouncycastle:bcmail-jdk14:jar:138:compile 
[INFO] | | +- bouncycastle:bcprov-jdk14:jar:138:compile 
[INFO] | | \- org.bouncycastle:bctsp-jdk14:jar:1.38:compile 
[INFO] | |  +- org.bouncycastle:bcprov-jdk14:jar:1.38:compile 
[INFO] | |  \- org.bouncycastle:bcmail-jdk14:jar:1.38:compile 
[INFO] | +- org.jfree:jfreechart:jar:1.0.19:compile 
[INFO] | | \- org.jfree:jcommon:jar:1.0.23:compile 
[INFO] | +- com.googlecode.juniversalchardet:juniversalchardet:jar:1.0.3:compile 
[INFO] | +- com.microsoft.ews-java-api:ews-java-api:jar:2.0:compile 
[INFO] | | +- org.apache.httpcomponents:httpclient:jar:4.4.1:compile 
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.4.1:compile 
[INFO] | | +- org.apache.commons:commons-lang3:jar:3.4:compile 
[INFO] | | \- joda-time:joda-time:jar:2.8:compile 
[INFO] | \- commons-codec:commons-codec:jar:1.9:compile 
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.2.5.RELEASE:compile 
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.2.5.RELEASE:compile 
[INFO] | | +- org.springframework.boot:spring-boot:jar:1.2.5.RELEASE:compile 
[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.2.5.RELEASE:compile 
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.2.5.RELEASE:compile 
[INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.12:compile 
[INFO] | | | +- org.slf4j:log4j-over-slf4j:jar:1.7.12:compile 
[INFO] | | | \- ch.qos.logback:logback-classic:jar:1.1.3:compile 
[INFO] | | |  \- ch.qos.logback:logback-core:jar:1.1.3:compile 
[INFO] | | \- org.yaml:snakeyaml:jar:1.14:compile 
[INFO] | +- org.hibernate:hibernate-validator:jar:5.1.3.Final:compile 
[INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile 
[INFO] | | +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile 
[INFO] | | \- com.fasterxml:classmate:jar:1.0.0:compile 
[INFO] | +- org.springframework:spring-core:jar:4.1.7.RELEASE:compile 
[INFO] | +- org.springframework:spring-web:jar:4.1.7.RELEASE:compile 
[INFO] | \- org.springframework:spring-webmvc:jar:4.1.7.RELEASE:compile 
[INFO] +- org.springframework.boot:spring-boot-starter-jersey:jar:1.2.5.RELEASE:compile 
[INFO] | +- org.glassfish.jersey.core:jersey-server:jar:2.14:compile 
[INFO] | | +- org.glassfish.jersey.core:jersey-common:jar:2.14:compile 
[INFO] | | | +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.14:compile 
[INFO] | | | \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile 
[INFO] | | +- org.glassfish.jersey.core:jersey-client:jar:2.14:compile 
[INFO] | | +- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile 
[INFO] | | +- javax.annotation:javax.annotation-api:jar:1.2:compile 
[INFO] | | +- org.glassfish.hk2:hk2-api:jar:2.4.0-b06:compile 
[INFO] | | | +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b06:compile 
[INFO] | | | \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b06:compile 
[INFO] | | +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b06:compile 
[INFO] | | \- org.glassfish.hk2:hk2-locator:jar:2.4.0-b06:compile 
[INFO] | +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.14:compile 
[INFO] | +- org.glassfish.jersey.containers:jersey-container-servlet:jar:2.14:compile 
[INFO] | +- org.glassfish.jersey.ext:jersey-bean-validation:jar:2.14:compile 
[INFO] | +- org.glassfish.jersey.ext:jersey-spring3:jar:2.14:compile 
[INFO] | | +- org.glassfish.hk2:hk2:jar:2.4.0-b06:compile 
[INFO] | | | +- org.glassfish.hk2:config-types:jar:2.4.0-b06:compile 
[INFO] | | | +- org.glassfish.hk2:core:jar:2.4.0-b06:compile 
[INFO] | | | +- org.glassfish.hk2:hk2-config:jar:2.4.0-b06:compile 
[INFO] | | | | +- org.jvnet:tiger-types:jar:1.4:compile 
[INFO] | | | | \- org.glassfish.hk2.external:bean-validator:jar:2.4.0-b06:compile 
[INFO] | | | +- org.glassfish.hk2:hk2-runlevel:jar:2.4.0-b06:compile 
[INFO] | | | \- org.glassfish.hk2:class-model:jar:2.4.0-b06:compile 
[INFO] | | |  \- org.glassfish.hk2.external:asm-all-repackaged:jar:2.4.0-b06:compile 
[INFO] | | \- org.glassfish.hk2:spring-bridge:jar:2.4.0-b06:compile 
[INFO] | \- org.glassfish.jersey.media:jersey-media-json-jackson:jar:2.14:compile 
[INFO] |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.3.2:compile 
[INFO] |  \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.3.2:compile 
[INFO] |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.3.2:compile 
[INFO] +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.2.5.RELEASE:provided 
[INFO] | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.0.23:provided 
[INFO] | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.0.23:provided 
[INFO] | +- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:8.0.23:provided 
[INFO] | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.0.23:provided 
[INFO] +- org.springframework.boot:spring-boot-starter-actuator:jar:1.2.5.RELEASE:compile 
[INFO] | \- org.springframework.boot:spring-boot-actuator:jar:1.2.5.RELEASE:compile 
[INFO] +- org.mockito:mockito-core:jar:1.9.5:test 
[INFO] | \- org.objenesis:objenesis:jar:1.0:test 
[INFO] +- junit:junit:jar:4.12:test 
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:1.2.5.RELEASE:test 
[INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:test 
[INFO] | +- org.hamcrest:hamcrest-library:jar:1.3:test 
[INFO] | \- org.springframework:spring-test:jar:4.1.7.RELEASE:test 
[INFO] \- com.jayway.jsonpath:json-path:jar:1.1.0:test 
[INFO] +- net.minidev:json-smart:jar:2.0:test 
[INFO] | \- net.minidev:asm:jar:1.0:test 
[INFO] |  \- asm:asm:jar:3.3.1:test 
[INFO] \- org.slf4j:slf4j-api:jar:1.7.7:compile 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 11.927 s 
[INFO] Finished at: 2016-03-29T17:46:31+02:00 
[INFO] Final Memory: 25M/275M 
[INFO] ----------------------------- 

,但我不能够解决这个问题。

你对如何解决这个问题有想法吗? 谢谢你的建议。

Ravi N.

+0

不要添加这些依赖关系,而是使用'spring-boot-starter-test'而不是单个罐子。 –

+0

我已经在使用spring-boot-starter-test,但正如你在屏幕截图(Dependancy hirarchy)中看到的那样,存在很多冲突,所以我添加了这些依赖关系。 –

+0

如果你有冲突,你正在做的事情你不应该做的第一个地方。此外,您的屏幕截图不会告诉我任何事情,只有您使用该启动器。如果你有冲突,你没有正确使用spring boot来管理你的依赖关系。发布实际的pom和/ r“mvn dependency:tree”的输出。 –

回答

0

duffymo有点偏右,这是Eclipse和他的集成JUnit的问题。

解决我的问题,我这样做:

1 - 从这里下载最新的hamcrest-所有jar:https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/hamcrest/

2-转到Eclipse的安装文件夹:日食/插件/并找到org.hamcrest ... jar

3-制作第2步jar的备份,并将其替换为第1步jar(重命名为jar步骤2)。

4-重启eclipse

之后,我的问题就解决了。

1

我相信你pom.xml是不正确的。我有这个在我的:

<dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 

的JUnit对hamcrest核心的依赖,但其pom.xml中的Maven已经把它在没有你不必在你明确地提出要求。

可能是因为Eclipse内建的JUnit与pom.xml中的版本冲突。我推荐一个更好的IDE - 使用JetBrains的IntelliJ。

+0

在我的情况下,我尝试从Junit中排除“hamcrest-core”依赖性,因为此JAR已经包含在spring-boot-starter-test中(正如您可以在屏幕截图中看到的依赖性过期) 。 –

+0

我也使用了所有这些JAR,并且可以在Maven和IntelliJ中运行没有排除或问题的测试。 – duffymo

+0

我会试用IntelliJ –

0

指定的答案是误导性的,而不是正确的做法。我所做的只是进入Project Properties并从Java Build Path中移除JUnit。当我直接运行测试时,Eclipse已经自动添加了它,而不是从maven。