2011-03-06 115 views

回答

0

這不行?

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

它是空的:(是否有可能得到的classpath形式的類加載器? – yegor256 2011-03-06 18:53:56

+1

Groovy中似乎做時髦的東西,而java.class.path不包含常規的-cp命令行選項傳遞的類路徑。 – 2011-09-20 12:41:24

+0

這不起作用 – osa 2013-10-11 20:10:35

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

不幸的是,當我在[gmaven plugin]中使用Groovy時(http: //docs.codehaus.org/display/GMAVEN/Executing+Groovy+Code)。是否有可能以某種方式從類加載器獲取類路徑? – yegor256 2011-03-06 18:55:56

0

,如果你想獲取CLASSPATH和文件,如果需要的CLASSPATH,您可以查看它

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

你應該能夠得到從SystemClassLoader類路徑,只要它是一個URLClassLoader的:

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

同樣的事情:命令中的'CLASSPATH'環境變量和'-classpath'對這個列表沒有任何影響,至少在我的情況下,它和wha是一樣的我在屬性'java.class.path'中看到。 – osa 2013-10-11 20:21:24

+0

但是,請參閱http://groovy.codehaus.org/How+can+I+dynamically+add+a+library+to+the+classpath關於動態添加類路徑的路徑。 this.class.classLoader.rootLoader。addURL(新的URL(「file:/// d:/drivers/ojdbc14.jar」)) – osa 2013-10-11 20:39:09

1

java.class.path不能正常工作,至少在Groovy 2.1.6(馬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")); 
    } 
} 

然後

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

結果:

Hello, World! 

/etc 

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

現在,這是HelloWorld.java:(我不得不改變它有點爲Groovy和Java都沒有100%兼容):

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")); 
    } 
} 

現在:

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

結果:

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

然後:

java -classpath /usr:. HelloWorld 

結果:

Hello, world! 

/etc 

/usr:. 

如果我找出如何使在Groovy中工作,我會更新...

5

無恥從http://blog.blindgaenger.net/print_groovys_classpath_for_debugging.html 此代碼被盜會漲的類加載器樹,並打印輸出每一個類加載器和相關的類路徑。

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