2011-07-09 6 views
2

私は、次のコードスニペットURLClassLoaderの検査ではないjarが

URL url = new File("c:/work/projects/jars/").toURI().toURL(); 
URL[] urls = new URL[]{url}; 
URLClassLoader child = new URLClassLoader(urls, this.getClass().getClassLoader()); 
URL res = child.findResource("temp.txt"); 
cls = child.loadClass("com.foo.adapter.sample.PluginImpl"); 

のjarファイルフォルダがテキストファイル「TEMP.TXT」とPluginImplクラスをcontiains jarファイルが含まれています。リソースはロードされていますが、クラスはロードされていません。 jarの内容をフォルダに展開すると、クラスがロードされます。 どこが間違っていますか?

答えて

2

JAR自体をクラスパスに追加する必要があります。 JVMはリソースとJARを区別します。これはうまくいくはずです:

URL url1 = new File("c:/work/projects/jars/").toURI().toURL(); // resources 
URL url2 = new File("c:/work/projects/jars/myjar.jar").toURI().toURL(); // jar 
URL[] urls = new URL[]{url1, url2}; 
+0

私はディレクトリパスとそのパス内のすべてのjarとリソースをクラスローダーが利用できる方法はありますか? – mihirg

+0

@chimanrao:この質問を参照してください:http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpathおそらくこれが役に立ちます。そうでない場合は、ディレクトリをスキャンしてURL配列を作成します – home

関連する問題