2011-03-06 3 views

Répondre

0

Cela ne fonctionne pas?

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

Il est vide :(Est-il possible d'obtenir sous forme classpath chargeur de classe? – yegor256

+1

Groovy semble faire des choses génial, et le java.class.path ne contient pas le classpath passé avec l'option de ligne de commande de -cp groovy. –

+0

Cela ne fonctionne pas – osa

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

Malheureusement, il est vide lorsque j'utilise Groovy à l'intérieur [gmaven plugin] (http: //docs.codehaus.org/display/GMAVEN/Executing+Groovy+Code) – yegor256

0

Obtenez le CLASSPATH et les fichiers si vous voulez en ceux CLASSPATH si nécessaire, vous pouvez le consulter

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

Vous devriez être en mesure d'obtenir le classpath de la SystemClassLoader, à condition qu'il soit un URLClassLoader:

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

Même chose: à la fois la variable d'environnement 'CLASSPATH' et le' -classpath' dans la commande cette ligne n'a aucun effet sur cette liste, au moins dans mon cas, elle est identique à wha Je vois dans la propriété 'java.class.path'. – osa

+0

Cependant, consultez http://groovy.codehaus.org/How+can+I+dynamically+add+a+library+to+the+classpath pour ajouter dynamiquement un chemin à classpath. this.class.classLoader.rootLoader.addURL (nouvelle URL ("file: /// d: /drivers/ojdbc14.jar")) – osa

1

java.class.path ne fonctionne pas correctement, au moins dans 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")); 
    } 
} 

Puis

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

Résultat:

Hello, World! 

/etc 

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

Maintenant, c'est HelloWorld.java: (je devais changer un peu comme Groovy et Java ne sont pas 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")); 
    } 
} 

maintenant:

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

Résultat:

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

Puis:

java -classpath /usr:. HelloWorld 

Résultat:

Hello, world! 

/etc 

/usr:. 

Je mettrai à jour si je trouve comment le faire fonctionner dans Groovy ...

5

Shameless volé http://blog.blindgaenger.net/print_groovys_classpath_for_debugging.html Ce code remonter dans l'arborescence classloader et impression chaque classloader et le classpath associé.

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