如何在Groovy中获取CLASSPATH
的当前值?
答案 0 :(得分:7)
从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
答案 1 :(得分:3)
你应该能够从SystemClassLoader获取类路径,前提是它是一个URLClassLoader:
URL[] classPathUrls = ClassLoader.getSystemClassLoader().getURLs();
答案 2 :(得分:1)
java.class.path
无法正常工作,至少在Groovy 2.1.6(Mac 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中运行,我会更新...
答案 3 :(得分:0)
这不起作用?
System.getProperty('java.class.path')
答案 4 :(得分:0)
如果需要,可以在CLASSPATH中获取CLASSPATH和文件(如果需要,可以查看)
System.getProperty("java.class.path", ".").tokenize(File.pathSeparator).each {
println it
}
答案 5 :(得分:-1)
def classpath = System.properties["java.class.path"]