0

我的情况是我有一个使用 Amazon AWS android libr jars(在 libs 文件夹内)的 Android 项目(常规)。我最近克隆了 Autobahn (https://github.com/tavendo/AutobahnAndroid),我自己使用这个库项目。问题是亚马逊库使用杰克逊,它包含在 aws jar 核心罐中。由于 Autobahn 也有这种依赖性,我在生成 apk 时遇到以下异常:

java.lang.IllegalArgumentException:已添加:Lorg/codehaus/jackson/Base64Variant;

由于我无法修改亚马逊库,有什么办法可以告诉 Autobahn 项目不要将杰克逊库依赖项“导出”到我自己的项目中?

4

3 回答 3

0

问题是亚马逊图书馆使用杰克逊,它包含在 aws jar core jars

:: 发牢骚,发牢骚 ::

有什么方法可以告诉 Autobahn 项目不要将 jackson libs 依赖项“导出”到我自己的项目中?

不是我知道的。但是您可以让 Autobahn 的分叉依赖于 AWS JAR,并摆脱它自己的 Jackson 副本。不过,这假设亚马逊的嵌入式 Jackson 是完整的并且与 Autobahn 兼容。

于 2012-09-20T16:30:26.760 回答
0

https://autobahn.s3.amazonaws.com/android/autobahn-0.5.0.jar上的 JAR是纯库,仅包含 Autobahn 类,没有引用 Jackson。

存档https://autobahn.s3.amazonaws.com/android/autobahn-0.5.0.zip包含 - 为了方便起见 - Autobahn 和 Jackson JAR。

当您使用来自 GitHub 的 Autobahn 源时,它将包含项目文件(加上示例等),然后设置对 Jackson 的依赖。

您可以从源代码构建您自己的 JAR,方法是转到 repo 中的 Autobahn 目录并执行ant jar. 然后,只将该 JAR 放入您的项目中。那应该行得通。

于 2012-09-20T17:28:43.667 回答
0

我遇到了一个非常相似的问题 Unable to execute dex: Multiple dex files defined Lorg/codehaus/jackson/Base64Variant using Google Drive api's and Google Spreadsheet api's。这可能会有所帮助。

尝试了所有常用的 Eclipse 修复方法,清理、重建、启动/停止 Eclipse、新工作区等。

如果您使用的是 Eclipse,这就是我无需管理 .jar 即可解决的方法。

1)在Eclipse中,右键单击您的项目属性

2)点击Java编译器

3) 点击建筑

4) 单击配置工作区设置

5) 单击启用项目特定设置

6)点击输出文件夹

7)点击“重建其他人修改的类文件”

希望这可以帮助。

于 2013-06-29T21:11:50.057 回答