在我的项目中,我们引用了很多依赖项 .jar 文件。
/lib/xxx.jar /lib/abc.jar
包含一些 (com.search.hit) 包的 xxx.jar 文件。abc.jar 文件中提供了相同的包。但是现在问题出现了,在访问 xxx.jar 文件时,它没有引用它们的包(com.search.hit),而是引用 abc.jar 包。
谁能告诉如何重定向流程?
在我的项目中,我们引用了很多依赖项 .jar 文件。
/lib/xxx.jar /lib/abc.jar
包含一些 (com.search.hit) 包的 xxx.jar 文件。abc.jar 文件中提供了相同的包。但是现在问题出现了,在访问 xxx.jar 文件时,它没有引用它们的包(com.search.hit),而是引用 abc.jar 包。
谁能告诉如何重定向流程?
类路径中最先出现的 jar 中的类就是被使用的类。就类加载器而言,另一个甚至可能不存在。避免这样的冲突是个好主意。
在 Eclipse 中,转到您的项目构建路径配置并单击库选项卡。然后从列表中删除您不想被访问的包并再次添加它。
这将导致包在优先级列表中较低,并且它会在您刚刚重新添加的包之前检查另一个包。
这会给你带来麻烦。我的建议是创建 2 个额外的类来为这些 jar 文件编写 getter 和 setter 包装器。编写 2 个单独的类,每个类都将仅引用其中一个,您的项目文件将使用这些包装类从这些 jar 中调用函数。这样会容易很多。
您必须更改包名称,它不能与单个 JVM 中的相同包的文件名相同。JVM 将使用类加载器随机加载一个 jar 类并忽略其余部分。