gpt4 book ai didi

java - 如何使用 Android 不支持的 java 核心库?

转载 作者:行者123 更新时间:2023-11-30 11:53:45 28 4
gpt4 key购买 nike

在android中使用核心类时出现问题Dx处理“javax/xml/bind/Binder.class”时出现问题我确实需要 javax.xml.* 中的类来开发 Web 服务,但是Android 不完全支持它。当我导入这些 jar 时,那里eclipse 中没有显示编译错误,但 DX 无法处理它。我在网上搜了一下,据说可以用--core-库或使用 jarjar 重新打包它。我还没有找到任何在 Eclipse 中添加 DX 选项的教程。我感谢您解决问题的任何帮助。

最佳答案

您从 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 "$@"

在我的例子中,我包含了一个依赖于 Jackson 的库,而 Jackson 又依赖于 JAXB。对我来说,覆盖愚蠢检查是可以接受的,因为库对 Jackson 的使用仅用于 JSON 而不是用于 XML 序列化(我只包括 JAXB API 库,而不是 impl)。当然,我希望有一种更简洁的方法来解决这个问题,但是重写顶层库以避免使用 Jackson 不是一种选择。

关于java - 如何使用 Android 不支持的 java 核心库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6125322/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com