繁体   English   中英

从相同名称的包中引用相同名称的不同类

[英]Referring different classes of same name from packages of same name

我们有一个过程,需要在不同的时间引用具有相同名称的两个不同的加密类。 这两个类名都相同,并且包路径相同:“ com.abc.security.encryption”。

这两个类具有相同的包名称com.abc.security.encryption,但是它们存在于不同的jar文件中。

假设Jar A中存在ENCRYPTION.class(新逻辑),Jar B中存在ENCRYPTION.class(旧逻辑)。现在在我的过程中,当我们调用引用ENCRYPTION.class的Jar B API时,就是引用ENCRYPTION.class (新逻辑)存在于Jar A中,而不是JAR B中存在的ENCRYPTION.class(旧逻辑)。

在删除具有ENCRYPTION.class(新逻辑)的Jar A之前,不会引用Jar B中存在的ENCRYPTION.class(旧逻辑)。

由于两种加密逻辑都来自许多不同模块使用的不同实用程序模块,因此我无法要求它们更改程序包的名称。

我需要一种方法来确保两个逻辑都在所需的位置被引用,而无需更改那些模块中的任何内容。 可以在我的过程的类路径或代码中进行任何更改,以便调用Jar B API并调用Jar B本身中存在的ENCRYPTION.class(旧逻辑)。 当我直接调用ENCRYPTION.class时,它应该引用Jar A中存在的ENCRYPTION.class(新逻辑)。

尝试通过将第一类路径添加为“”。 这个过程。 但这并没有解决问题。 非常感谢您的帮助。

谢谢,Nvn

您应该从类路径中删除有问题的jar。 具有多个包含相同完全限定的类名的jar的类路径是灾难的秘诀。

如果这不是一个选择,则您可能可以创建一个自定义类加载器来执行此交换。 但这可能并不容易。 还有一个类似的问题,如果您走这条路,它可能会让您入门: 卸载Java中的类?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM