2016-04-26 8 views
0

クラスパス上にクラスがありますが、それらのすべてを望んでいません(さらに、クラスパス全体をスキャンするのがかなり遅いです)。 1つのExampleClassが与えられていると、同じクラスパスエントリ(つまり、ディレクトリまたはJARにあるすべてのクラスを取得したい場合、他のケースは無視できます)。 1つのClassLoaderがあります。クラスがロードされるパスを取得する方法

私は常に最初のクラスパスエントリを取得するようExampleClass.class.getResource("/")を使用すると、

/whatever/build/classes/main/ 

ExampleClass.class.getResource(".")、例えば、動作しませんが、例えば、私ができる何かである

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

を適切なエントリの子を返します。処理するまで

/whatever/build/classes/test/ 

賭けがあるかどうかは分かりますが文字列で欺くよりも。ここで

答えて

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

チェックが。

0

は一例です:

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

出力は次のとおりです。nullのため

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