2011-11-25 179 views
0

我有兩個罐子在那裏a.jar文件和B.jar。兩者的目錄/插件具有相同名稱的文件,config.xml中名稱衝突

File file = new File("plugin/"); 
for (File item: file.listFiles()) { 

    if (item.isFile() && item.getName().substring(item.getName().lastIndexOf(".")).equals(".jar")) { 
     ClassPathHacker.addFile(item); // classPathHacker adds the jar to classpath 

     InputStream is = getClass().getClassLoader().getResourceAsStream("config.xml"); 
    } 
} 

但問題是它在新的迭代之後不加載新的config.xml文件,而是每次加載第一個config.xml。如何解決這個衝突?

回答

0

使用ClassLoader#getResources()獲取所有config.xml文件的URL。然後你可以選擇使用哪一個,可能你需要最後一個。

另一種選擇是不是好惹的類加載器黑客和剛讀使用ZipFile

可以直接從該.jar需要的文件
0

把一個用最新的文件,另一個在classpath

0

你確定這是不是同時裝入的config.xml文件之前?請記住,當解析名稱處理從PATH/CLASSPATH的左側開始時,一次向右移動一個標記,直到到達列表的末尾或找到第一個匹配。