nasıl Groovy CLASSPATH
mevcut değerini alabilirim?Groovy'de sınıf yolu nasıl alınır?
cevap
Bu çalışmıyor?
System.getProperty('java.class.path')
def classpath = System.properties["java.class.path"]
Ne yazık ki içinde Groovy kullanıyorum boştur [gmaven eklentisi] (http: //docs.codehaus.org/display/GMAVEN/Executing+Groovy+Code) Sınıf yükleyiciden sınıf yolunu bir şekilde almak mümkün mü? – yegor256
isterseniz gerekirse bu CLASSPATH'e içinde CLASSPATH ve dosyaları alın Ne olduğunu sağlayarak, Sen SystemClassLoader gelen sınıf yolunu almak gerekir o
System.getProperty("java.class.path", ".").tokenize(File.pathSeparator).each {
println it
}
görebilirsiniz bir URLClassLoader:
URL[] classPathUrls = ClassLoader.getSystemClassLoader().getURLs();
Aynı şey: hem "CLASSPATH" ortam değişkeni hem de komuttaki '-classpath ' satırın bu listede hiçbir etkisi yoktur, en azından benim durumumda, wha ile aynıdır 'java.class.path' özelliği görüyorum. – osa
Ancak dinamik sınıf için bir yol ekleme hakkında http://groovy.codehaus.org/How+can+I+dynamically+add+a+library+to+the+classpath bakın. this.class.classLoader.rootLoader.addURL (yeni URL ("dosya: /// d: /drivers/ojdbc14.jar")) – osa
java.class.path
en azından Groovy 2.1.6, düzgün çalışmıyor (Ma c OS X 10.6.8).
HelloWorld.groovy
: Sonra
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
Sonuç:
Hello, World!
/etc
/Applications/groovy-2.1.6/lib/groovy-2.1.6.jar
Şimdi, bu HelloWorld.java
bağlıdır: (ben o Groovy ve Java olmadıklarından biraz değiştirmek zorunda % 100 uyumlu)
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
Sonuç: Sonra
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
Caused by: java.lang.ClassNotFoundException: HelloWorld
etc. ...................
:
java -classpath /usr:. HelloWorld
Sonuç:
Hello, world!
/etc
/usr:.
Ben Groovy çalışması için nasıl bulursam güncelleriz 10
... classloader ağaca gidin ve her classloader ve ilgili sınıfyolu çıktısı olacak http://blog.blindgaenger.net/print_groovys_classpath_for_debugging.html Bu kod çalınan
Utanmazıyım.
def printClassPath(classLoader) {
println "$classLoader"
classLoader.getURLs().each {url->
println "- ${url.toString()}"
}
if (classLoader.parent) {
printClassPath(classLoader.parent)
}
}
printClassPath this.class.classLoader
Boş :(sınıf yolu formu sınıf yükleyici almak mümkün mü değil mi? – yegor256
Groovy korkak şeyler görünüyor ve java.class.path Groovy -cp komut satırı seçeneği ile geçti sınıfyolu içermiyor. –
Bu işe yaramıyor – osa