java elasticsearch integration-testing

Java Jar hell Runtime Exception



elasticsearch integration-testing (1)

Estoy enfrentando el problema con el infierno mientras ejecuto la prueba unitaria.

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

Tengo el error anterior, resolví esos al eliminar el archivo jar innecesario.

Pero estoy enfrentando el problema con los dos jar siguientes: tomcat-embed-core-8.0.36.jar e hibernate-jpa-2.1-api-1.0.0.Final.jar. Hay una clase común entre estos dos. Necesito el archivo jar. ¿Alguien me puede explicar cómo resolver el problema? Necesito ambos el archivo 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

Gracias por adelantado.


Lo arreglé anulando la clase JarHell en la carpeta de pruebas de unidades de unidad.

Pasos que he hecho

  1. crea un paquete separado en la carpeta de prueba.

    org.elasticsearch.bootstrap

  2. Crea una nueva clase y pega el siguiente código.

    package org.elasticsearch.bootstrap; import java.net.URL; public class JarHell { private JarHell() {} public static void checkJarHell() throws Exception {} public static void checkJarHell(URL urls[]) throws Exception {} public static void checkVersionFormat(String targetVersion) {} public static void checkJavaVersion(String resource, String targetVersion) {} public static URL[] parseClassPath() {return new URL[]{};} }

  3. El problema se solucionó mientras se hacía la compilación gradlew.

  4. Para ejecutar la prueba de integración por separado, agregue la siguiente línea a los argumentos de VM en las configuraciones de ejecución.

-ea -Dtests.security.manager=false