es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregue las siguientes opciones de máquina virtual en el archivo pom.xml: -Djava.util.Arrays.useLegacyMergeSort=true

Obtuve este error mientras ejecutaba una prueba junit en mi aplicación. Más tarde descubrí que se debe al tamaño del campo declarado.

java.lang.IllegalArgumentException: ¡El método de comparación viola su contrato general!

en java.util.TimSort.mergeHi(TimSort.java:899)
en java.util.TimSort.mergeAt(TimSort.java:516)
en java.util.TimSort.mergeCollapse(TimSort.java:441)

en org.mockito.internal.configuration.injection.PropertyAndSetterInjection.orderedInstanceFieldsFrom(PropertyAndSetterInjection.java:125)

Encontré que la solución probable sería agregar esta bandera.

-Djava.util.Arrays.useLegacyMergeSort=true

en los argumentos de la VM. Pero quería agregarlo en el archivo pom.xml.

Consulté esto
cómo agregar argumentos de VM usando el archivo pom.xml pero se refiere principalmente a las banderas -X, ¿cuál sería el lugar apropiado en este caso?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para agregar la bandera -Djava.util.Arrays.useLegacyMergeSort=true en el archivo pom.xml, puedes utilizar la configuración argLine en el maven-surefire-plugin. Este plugin es responsable de ejecutar pruebas JUnit en Maven.

    Aquí te mostramos cómo puedes agregar esta configuración:

    <build>
      <plugins>
        <!-- otros plugins -->
        <plugin>
          <groupid>org.apache.maven.plugins</groupid>
          <artifactid>maven-surefire-plugin</artifactid>
          <version>3.0.0-M5</version> <!-- la versión puede variar -->
          <configuration>
            <argline>-Djava.util.Arrays.useLegacyMergeSort=true</argline>
          </configuration>
        </plugin>
        <!-- otros plugins -->
      </plugins>
    </build>
    

    Al agregar esta configuración, el maven-surefire-plugin utilizará el valor de argLine como argumentos adicionales de línea de comandos al ejecutar las pruebas, lo cual incluye la bandera que soluciona el error específico que encontraste.

    Ten en cuenta que la versión del plugin puede variar. Además, asegúrate de insertar esta configuración dentro de plugins en la sección build del archivo pom.xml.

Comments are closed.