Java 如何在多个位置导入包中声明的类的特定版本?

Java 如何在多个位置导入包中声明的类的特定版本?,java,eclipse,Java,Eclipse,我想进口 org.apache.commons.codec.binary.Base64 但是,该类已经在“AWS SDK for Java”中声明。 但是我还添加了jar文件commons-codec-1.8.jar,我希望它从那里加载。如果我使用eclipse界面,显示可能的导入选项,我只会得到org.apache.commons.codec.binary.Base64,所以我真的不知道如何强制它从我引用的库中加载它。因为这两个jar都遵循相同的结构,所以它会选择其中一个。为此,您需要删除一个

我想进口

org.apache.commons.codec.binary.Base64

但是,该类已经在“AWS SDK for Java”中声明。
但是我还添加了jar文件commons-codec-1.8.jar,我希望它从那里加载。如果我使用eclipse界面,显示可能的导入选项,我只会得到org.apache.commons.codec.binary.Base64,所以我真的不知道如何强制它从我引用的库中加载它。

因为这两个jar都遵循相同的结构,所以它会选择其中一个。为此,您需要删除一个不需要的.class文件并导入它。

Eclipse构建一个包含两个JAR的大类路径,但Java运行时将加载 它找到的是头等舱

AWS SDK使用apache commons编解码器作为依赖项。 如果您查看,您可以看到它们参考1.3

您可以更改pom,或者如果您根本不使用maven(从AWS下载jar),则从第三方库中删除1.3 jar并仅使用新的

另一个选择是自己使用1.3,并从类路径中删除1.8。
使用标准类加载器无法加载相同类名的不同版本。

问题是,我想使用默认情况下未包含在我使用的SDK中的版本。所以我不能这么做。另外,谁知道该框架使用该类的目的是什么,如果我这样做,我可能会破坏它。我现在看到两个JAR,我将尝试删除旧的JAR,如果aws中的某些内容被破坏,我将恢复使用该JAR。谢谢