【发布时间】:2016-08-02 05:19:22
【问题描述】:
我在运行单元测试时遇到了 jar hell 的问题。
java.lang.RuntimeException: found jar hell in test classpath
at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:95)
at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:99)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:585)
Caused by: java.lang.IllegalStateException: jar hell!
class: org.apache.commons.io.CopyUtils
jar1: C:\Users\vvenkatasubbu\.gradle\caches\modules-2\files-2.1\commons-io\commons-io\1.3.2\b6dde38349ba9bb5e6ea6320531eae969985dae5\commons-io-1.3.2.jar
jar2: C:\Users\vvenkatasubbu\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-io\1.3.2\b6dde38349ba9bb5e6ea6320531eae969985dae5\commons-io-1.3.2.jar
at org.elasticsearch.bootstrap.JarHell.checkClass(JarHell.java:282)
at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:186)
at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:87)
at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:93)
... 4 more
我遇到了上述错误,通过删除不必要的 jar 文件解决了这些错误。
但我面临以下两个 jar 的问题,即 tomcat-embed-core-8.0.36.jar 和 hibernate-jpa-2.1-api-1.0.0.Final.jar。这两者之间有一个共同的类,我需要两个 jar 文件,谁能解释我如何解决这个问题。我需要两个 jar 文件。
java.lang.RuntimeException: found jar hell in test classpath
at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:95)
at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:99)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:585)
Caused by: java.lang.IllegalStateException: jar hell!
class: javax.persistence.PersistenceProperty
jar1: C:\Users\vvenkatasubbu\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\8.0.36\de87fa65671daad59773c8280eeabbd335f42c\tomcat-embed-core-8.0.36.jar
jar2: C:\Users\vvenkatasubbu\.gradle\caches\modules-2\files-2.1\org.hibernate.javax.persistence\hibernate-jpa-2.1-api\1.0.0.Final\5e731d961297e5a07290bfaf3db1fbc8bbbf405a\hibernate-jpa-2.1-api-1.0.0.Final.jar
at org.elasticsearch.bootstrap.JarHell.checkClass(JarHell.java:282)
at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:186)
at org.elasticsearch.bootstrap.JarHell.checkJarHell(JarHell.java:87)
at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:93)
... 4 more
提前致谢。
【问题讨论】:
-
你确定在你的测试中需要这两个吗?属于两个 jar 的类的名称是什么?
-
我在运行应用程序时需要两者。不是在进行集成测试时,
-
您使用的是 maven?显示你的 pom.xml?您可以提供它们或类似的东西,以隐藏测试
-
有可用的依赖,providedRuntime('org.springframework.boot:spring-boot-starter-tomcat:1.3.7.RELEASE') compile('org.springframework.boot:spring-boot -starter-data-jpa:1.3.7.RELEASE') 编译('org.springframework.boot:spring-boot-starter-web:1.3.7.RELEASE')
标签: java elasticsearch integration-testing