在android中使用核心类时有麻烦 DX 处理“javax / xml / bind / Binder.class”时遇到问题 我确实需要javax.xml。*中的类来开发Web服务,但是 在Android中不完全支持它。当我导入这些罐子时,那里 在eclipse中没有显示编译错误,但DX无法处理它。 我在互联网上搜索后,据说我们可以使用--core- 库或使用jarjar重新包装它。 我还没有找到任何在eclipse中添加DX选项的教程。一世 感谢任何帮助解决它。
答案 0 :(得分:1)
您从Dx获得的错误仅基于您要导入的库的java包名称而不是其他内容。
该消息可以概括为:如果您在java。*或javax。*命名空间中导入库,它很可能依赖于仅作为JDK的一部分提供的其他“核心”库,因此在Android平台上不可用。它实际上阻止你做一些愚蠢的事情,这在99%的时间看到那条消息是准确的。
现在,当然,仅仅因为java包以java。*或javax开头。*并不一定意味着它依赖于JDK本身。它可能在android中完美运行。要绕过愚蠢检查,请将--core-library选项添加到dx。更改$ANDROID_HOME/platform-tools/dx
的最后一行,
exec java $javaOpts -jar "$jarpath" "$@"
要,
exec java $javaOpts -jar "$jarpath" --core-library "$@"
在我的情况下,我包括一个依赖于杰克逊的图书馆,这依赖于JAXB。对我来说,重写愚蠢检查是可以接受的,因为该库使用Jackson仅用于JSON而不用于XML序列化(我只包括JAXB API库,而不是impl)。当然我希望有一个更清洁的方法来解决这个问题,但重写高级图书馆以避免使用杰克逊不是一个选择。
答案 1 :(得分:0)
这些类是针对与android dalvik不兼容的jvm编译的。您将需要获取源,而不是jar,并将它们编译为为android编译的jar文件。