2011-03-06 79 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