簡體   English   中英

jar文件中的名稱沖突

[英]Name conflicts in jar file

我有一個目錄/ plugin,其中有兩個jar,分別是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。 如何解決這個矛盾?

將具有最新文件的文件放置在類路徑中的另一個文件之前

您確定它不會同時加載兩個config.xml文件嗎? 請記住,在解析名稱時,處理始於PATH / CLASSPATH的左側,並一次向右移動一個標記,直到到達列表的末尾或找到第一個匹配項為止。

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

另一個選擇是不要弄亂classloader的hack,而只是使用ZipFile從.jar中直接讀取您需要的文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM