我有一个带有两个jar的目录/插件A.jar和B.jar .Both有一个同名的文件,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 :(得分:0)
将带有最新文件的文件放在类路径
中的另一文件之前答案 1 :(得分:0)
您确定它没有加载两个config.xml文件吗?请记住,当解析名称处理从PATH / CLASSPATH的左侧开始并一次向右移动一个标记,直到到达列表的末尾或找到第一个匹配。
答案 2 :(得分:0)
使用ClassLoader#getResources()
获取所有config.xml文件的URL。然后你可以选择使用哪一个,可能你需要最后一个。
另一个选择是不要乱用类加载器黑客,只需使用ZipFile
直接从.jar中读取您需要的文件