Как получить classpath в Groovy? - PullRequest
7 голосов
/ 06 марта 2011

Как мне получить текущее значение CLASSPATH в Groovy?

Ответы [ 6 ]

8 голосов
/ 25 ноября 2014

бесстыдно похищен от 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
3 голосов
/ 05 июня 2012

Вы должны быть в состоянии получить classpath из SystemClassLoader, при условии, что это URLClassLoader:

URL[] classPathUrls = ClassLoader.getSystemClassLoader().getURLs();
1 голос
/ 12 октября 2013

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:.

I 'Я буду обновлять, если я узнаю, как заставить это работать в Groovy ...

0 голосов
/ 29 октября 2011

Получите CLASSPATH и файлы, если хотите, в этих CLASSPATH, при необходимости, вы можете просмотреть их

System.getProperty("java.class.path", ".").tokenize(File.pathSeparator).each {
                               println it                             
                }
0 голосов
/ 06 марта 2011
def classpath = System.properties["java.class.path"]
0 голосов
/ 06 марта 2011

Это не работает?

System.getProperty('java.class.path')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...