[英]How to get classpath in Groovy?
如何在Groovy中獲取CLASSPATH
當前值?
來自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
您應該能夠從SystemClassLoader獲取類路徑,前提是它是一個URLClassLoader:
URL[] classPathUrls = ClassLoader.getSystemClassLoader().getURLs();
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中工作,我會更新...
這不起作用?
System.getProperty('java.class.path')
如果需要,可以獲取CLASSPATH和文件,如果需要,可以查看它
System.getProperty("java.class.path", ".").tokenize(File.pathSeparator).each {
println it
}
def classpath = System.properties["java.class.path"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.