2016-04-26 10 views
0

Ich möchte einige Klassen auf dem Classpath auflisten, aber ich will nicht alle von ihnen (darüber hinaus ist das Scannen der gesamten Classpath ziemlich langsam). Mit einer einzigen ExampleClass möchte ich alle Klassen im gleichen Klassenpfad Eintrag (d. H. Verzeichnis oder JAR, andere Fälle können ignoriert werden). Es gibt einen einzigen ClassLoader.Wie bekomme ich einen Pfad eine Klasse geladen wird von

ExampleClass.class.getResource("/") nicht verwenden nicht arbeiten, wie ich immer den ersten Classpath Eintrag bekommen, zum Beispiel

/whatever/build/classes/main/ 

ExampleClass.class.getResource(".") ein Kind des richtigen Eintrags zurückzugibt, zB

/whatever/build/classes/test/somepackage/ExampleClass.class 

die etwas ist, ich konnte Prozess zu

/whatever/build/classes/test/ 

Aber ich frage mich, ob es eine Wette gibt besser als mit Strings herumalbern. Hier

Antwort

2
URL url = ExampleClass.getProtectionDomain().getCodeSource().getLocation(); 

prüfen null jedoch.

0

ein Beispiel:

package foo; 
    public class Test 
    { 
     public static void main(String[] args) 
     { 
      ClassLoader loader = Test.class.getClassLoader(); 
      System.out.println(loader.getResource("foo/Test.class")); 
     } 
    } 

Ausgang ist:

file:/C:/Users/Jon/Test/foo/Test.class 
Verwandte Themen