2011-07-09 70 views
2

我有下面的代碼片段URLClassLoader的不檢查罐子

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"); 

的罐子文件夾中包含一個文本文件「TEMP.TXT」和contiains的PluginImpl類的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