variable restaurar java_home entorno configurar java junit classpath

java - restaurar - variable path windows 10



¿Cómo establecer un largo classpath de Java en Windows? (9)

¿Has intentado apilarlos?

set CLASS_PATH = c:/path set ALT_A = %CLASS_PATH%/a/b/c; set ALT_B = %CLASS_PATH%/e/f/g; ... set ALL_PATHS = %CLASS_PATH%;%ALT_A%;%ALT_B%

Estoy tratando de ejecutar una prueba JUnit en particular a mano en una línea de comandos de Windows XP, que tiene un número inusualmente alto de elementos en la ruta de la clase. Probé varias variaciones, como por ejemplo:

set CLASS_PATH=C:/path/a/b/c;C:/path/e/f/g;.... set CLASS_PATH=%CLASS_PATH%;C:/path2/a/b/c;C:/path2/e/f/g;.... ... C:/apps/jdk1.6.0_07/bin/java.exe -client oracle.jdevimpl.junit.runner.TestRunner com.myco.myClass.MyTest testMethod

(Otras variaciones son establecer el classpath todo en una línea, establecer el classpath a través de -classpath como un argumento para java "). Siempre se reduce a que la consola arroje sus manos con este error:

The input line is too long. The syntax of the command is incorrect.

Esta es una prueba de JUnit que prueba un proyecto legacy existente bastante grande, por lo que no hay sugerencias sobre reorganizar mi estructura de directorios a algo más razonable, esos tipos de soluciones están fuera por el momento. Solo estaba tratando de generar una prueba rápida contra este proyecto y ejecutarlo en la línea de comandos, y la consola me está obstruyendo. ¡Ayuda!


Como menciona HuibertGill, incluiría esto en un script de compilación Ant para que no tenga que administrar todo esto usted mismo.


Creo que estás en el arroyo sin una paleta aquí. La línea de comandos tiene un límite para que los argumentos invoquen un programa.

Tengo 2 sugerencias que podrías intentar. En primer lugar, antes de ejecutar las pruebas junit, puede dejar que un script / ant_task cree JAR de las diversas clases en classpath. Luego puede colocar los JAR en classpath, que debería ser más corto.

Otra forma de intentarlo es crear un antscript para ejecutar JUNIT, en ANT no debería haber tal límite para las entradas de classpath.


Desde Java 6 puede usar comodines classpath .

Ejemplo: foo/* , se refiere a todos los archivos .jar en el directorio foo

  • esto no coincidirá con los archivos de clase (solo archivos jar). Para hacer coincidir ambos usos: foo;foo/* o foo/*;foo . El orden determina qué se carga primero.
  • La búsqueda NO es recursiva

La línea de comandos de Windows es muy limitante en este sentido. Una solución alternativa es crear un "contenedor de rutas". Este es un contenedor que contiene solo un archivo Manifest.mf , cuyo Class-Path especifica las rutas de disco de su larga lista de jar , etc. Ahora solo agregue este jar de ruta a su classpath de línea de comando. Esto suele ser más conveniente que empaquetar los recursos reales juntos.

Según recuerdo, las rutas de discos pueden ser relativas al propio contenedor de rutas. Entonces Manifest.mf podría verse más o menos así:

Class-Path: this.jar that.jar ../lib/other.jar

Si su contenedor de rutas contiene principalmente recursos fundamentales, no cambiará con demasiada frecuencia, pero probablemente aún desee generarlo en algún lugar de su compilación. Por ejemplo:

<jar destfile="pathing.jar"> <manifest> <attribute name="Class-Path" value="this.jar that.jar ../lib/other.jar"/> </manifest> </jar>


No hubo otra solución al problema que no sea hacer de alguna manera el classpath más corto moviendo los archivos jar a una carpeta como "C: / jar".


Podrías probar esto

@echo off set A=D:/jdk1.6.0_23/bin set B=C:/Documents and Settings/674205/Desktop/JavaProj set PATH="%PATH%;%A%;" set CLASSPATH="%CLASSPATH%;%B%;"

ir a un símbolo del sistema y ejecutarlo dos veces (no tengo idea por qué ... tengo que hacerlo en una máquina con Windows XP) también las rutas r se configuran solo para la sesión actual del símbolo del sistema


Si estuviera en su lugar, descargaría la utilidad de unión de MS: http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx y luego mapearía su "C: / ruta" para decir, "z : / "y" c: / path2 "para decir," y: / ". De esta forma, reducirá 4 caracteres por artículo en su classpath .

set CLASS_PATH=C:/path/a/b/c;C:/path/e/f/g; set CLASS_PATH=%CLASS_PATH%;C:/path2/a/b/c;C:/path2/e/f/g;

Ahora, tu classpath será:

set CLASS_PATH=z/a/b/c;z/e/f/g; set CLASS_PATH=%CLASS_PATH%;y:/a/b/c;y:/e/f/g;

Podría hacer más dependiendo de su classpath real.


(Supongo que realmente no se refiere a DOS, sino que se refiere a cmd.exe).

Creo que es menos una limitación CLASSPATH que un límite de tamaño variable de entorno / tamaño del entorno. En XP, las variables de entorno individuales pueden tener un tamaño de 8k, todo el entorno está limitado a 64k. No puedo ver que llegues a ese límite.

Hay un límite en Windows que restringe la longitud de una línea de comando, en WindowsNT + es 8k para cmd.exe. Un comando establecido está sujeto a esa restricción. ¿Puede ser que tenga más de 8k de directorios valiosos en su comando de configuración? Puede que tengas mala suerte, incluso si los divides como sugirió Nick Berardi .