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

时间:2014-04-15 06:55:36

标签: 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 ,所以我真的不知道如何强制它从我引用的库中的那个。

2 个答案:

答案 0 :(得分:1)

Eclipse构建一个包含两个jar的大型类路径,但Java运行时将加载 它找到的第一堂课。

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

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

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

答案 1 :(得分:0)

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