簡體   English   中英

如何在Groovy中獲取classpath?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM