簡體   English   中英

Maven依賴於Spring Boot和Junit

[英]Maven dependancy with spring boot and Junit

我正在一個基於spring-boot 1.2.5的項目上。

當我使用maven安裝腳本執行測試時,它們會成功通過。 但是,當我嘗試在Eclipse中使用JUnit執行測試時,出現以下問題:

java.lang.SecurityException:類“ org.hamcrest.Matchers”的簽名者信息與java.lang中java.lang.ClassLoader.checkCerts(ClassLoader.java:895)相同包中其他類的簽名者信息不匹配。 java.net.URLClassLoader.defineClass(URLClassLoader)的java.lang.ClassLoader.defineClass(ClassLoader.java:758)的ClassLoader.preDefineClass(ClassLoader.java:665)在java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) .java:455)at java.net.URLClassLoader.access $ 100(URLClassLoader.java:73)at java.net.URLClassLoader $ 1.run(URLClassLoader.java:367)at java.net.URLClassLoader $ 1.run(URLClassLoader.java :361),位於java.net.URLClassLoader.findClass(URLClassLoader.java:360),位於java.security.AccessController.doPrivileged(Native方法),位於sun.misc,位於java.lang.ClassLoader.loadClass(ClassLoader.java:424)。 net.aptea.sba.tests.controllers.TestClientContr上的java.lang.ClassLoader.loadClass(ClassLoader.java:357)上的Launcher $ AppClassLoader.loadClass(Launcher.java:308) oller.listClient(TestClientController.java:24)位於sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)位於sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)位於sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl。 43)在org.junit.inner.runners.model處的java.lang.reflect.Method.invoke(Method.java:483)在org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50)。 org.junit.runners.model.FrameworkMethod.invoke上的ReflectiveCallable.run(ReflectiveCallable.java:12)org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)上的Explosively(FrameworkMethod.java:47) org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:73)的org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) .context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCa llbacks.java:82),位於org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:73),位於org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325),位於org.springframework org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:83)上的.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:224)在org.junit.runners.ParentRunner $ 3.run(在org.junit.runners.ParentRunner上的ParentRunner.java:290)在org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)上的org.junit.runners.ParentRunner處的時間表(ParentRunner.java:71)在org.junit.runners.ParentRunner處訪問$ 000(ParentRunner.java:58)。在org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)處訪問$ 2.evaluate(ParentRunner.java:268)在org.junit的org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68)處。 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163)的Runners.ParentRunner.run(ParentRunner.java:363)org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)的JUnit4TestReference.java:86)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java: 459),位於org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)上的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) .eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

我認為這是Spring Boot框架內部的依賴問題:

依賴等級

所以我在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] -----------------------------

但是我無法解決這個問題。

您是否有解決此問題的想法? 感謝您的建議。

拉維N.

我相信您pom.xml不正確。 我有這個:

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

JUnit依賴於hamcrest-core,但是它的pom.xml使Maven引入了它,而無需您在自己的顯式請求中。

Eclipse可能具有一個內置的JUnit,它與pom.xml中的版本沖突。 我建議使用更好的IDE-使用JetBrains的IntelliJ。

duffymo是部分正確的,這是Eclipse及其集成JUnit的問題。

為了解決我的問題,我這樣做:

1-從此處下載最新的hamcrest-all jar: https ://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/hamcrest/

2-進入eclipse安裝文件夾:eclipse / plugin /並找到org.hamcrest ... jar

3-備份第2步jar,並用第1步jar替換它(將其重命名為與第2步的jar相同)。

4-重啟Eclipse

之后,我的問題解決了。

指定的答案具有誤導性,根本不是正確的選擇。 我所做的只是進入Project Properties並從Java Build Path中刪除JUnit。 當我直接運行測試而不是從maven運行時,Eclipse自動地添加了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM