2011-03-06 17 views

Respuesta

0

Esto no funciona?

System.getProperty('java.class.path') 
+1

Es :(vacía es posible conseguir el cargador de clases formulario de ruta de clases? – yegor256

+1

maravilloso parece hacer cosas cobarde, y el java.class.path no contiene la ruta de clase pasado con la opción de línea de comandos de -cp maravilloso. –

+0

Esto no funciona. – osa

-1
def classpath = System.properties["java.class.path"] 
+0

Desafortunadamente está vacío cuando estoy usando Groovy dentro de [complemento gmaven] (http: //docs.codehaus.org/display/GMAVEN/Executing+Groovy+Code). ¿Es posible obtener classpath del cargador de clase de alguna manera? – yegor256

0

Obtener el CLASSPATH y archivos si desea en el los CLASSPATH si es necesario se puede ver que

System.getProperty("java.class.path", ".").tokenize(File.pathSeparator).each { 
           println it        
       } 
2

Usted debe ser capaz de obtener la ruta de clase del SystemClassLoader, siempre y cuando sea un URLClassLoader:

URL[] classPathUrls = ClassLoader.getSystemClassLoader().getURLs(); 
+0

Lo mismo: tanto la variable de entorno 'CLASSPATH' como' -classpath' en el comando línea no tiene ningún efecto en esta lista. Al menos en mi caso es idéntica a la que t Veo en la propiedad 'java.class.path'. – osa

+0

Sin embargo, consulte http://groovy.codehaus.org/How+can+I+dynamically+add+a+library+to+the+classpath para agregar dinámicamente una ruta a classpath. this.class.classLoader.rootLoader.addURL (nueva URL ("archivo: /// d: /drivers/ojdbc14.jar")) – osa

1

java.class.path no funciona correctamente, por lo menos en Groovy 2.1.6 (Ma c OS X 10.6.8).

HelloWorld.groovy:

public class HelloWorld { 

    public static void main(def args) { 
     System.out.println("Hello, world!\n"); 
     System.out.println(System.getenv("CLASSPATH")+"\n"); 
     System.out.println(System.getProperty("java.class.path")); 
    } 
} 

Entonces

export CLASSPATH=/etc 
groovy -classpath /usr HelloWorld.groovy 

Resultado:

Hello, World! 

/etc 

/Applications/groovy-2.1.6/lib/groovy-2.1.6.jar 

Ahora bien, esto es HelloWorld.java: (tuve que cambiar un poco como Groovy y Java no son 100% compatible):

public class HelloWorld { 
    public static void main(String args[]) { 
     System.out.println("Hello, world!\n"); 
     System.out.println(System.getenv("CLASSPATH")+"\n"); 
     System.out.println(System.getProperty("java.class.path")); 
    } 
} 

Ahora:

javac HelloWorld.java 
export CLASSPATH=/etc 
java -classpath /usr HelloWorld 

Resultado:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld 
Caused by: java.lang.ClassNotFoundException: HelloWorld 
etc. ................... 

continuación:

java -classpath /usr:. HelloWorld 

Resultado:

Hello, world! 

/etc 

/usr:. 

Voy a actualizar si me entero de cómo hacer que funcione en el maravilloso ...

5

Shameless robado de http://blog.blindgaenger.net/print_groovys_classpath_for_debugging.html Este código va a subir el árbol cargador de clases y la hoja impresa cada cargador de clases y la ruta de clase asociada.

def printClassPath(classLoader) { 
    println "$classLoader" 
    classLoader.getURLs().each {url-> 
    println "- ${url.toString()}" 
    } 
    if (classLoader.parent) { 
    printClassPath(classLoader.parent) 
    } 
} 
printClassPath this.class.classLoader 
Cuestiones relacionadas