有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

在安卓中使用核心类时会出现问题 Dx 处理“javax/xml/bind/Binder.class”时出现问题 我确实需要javax中的类。xml.*用于开发web服务,但是 Android并不完全支持它。当我进口这些罐子时,有 eclipse中没有显示编译错误,但DX无法处理它。 我在互联网上搜索后,据说我们可以使用--core- 库或使用jarjar重新打包。 我还没有找到任何关于在eclipse中添加DX选项的教程。我 感谢您对解决此问题的任何帮助


共 (2) 个答案

  1. # 1 楼答案

    这些类是针对与android dalvik不兼容的jvm编译的。您需要获取源代码,而不是jar,并将它们编译成为android编译的jar文件

  2. # 2 楼答案

    从Dx中得到的错误只基于要导入的库的java包名称,而不是其他

    该消息可以概括为:如果在java中导入库。*或者javax。*命名空间,它很可能依赖于仅作为JDK一部分提供的其他“核心”库,因此在Android平台上不可用它本质上是阻止你做愚蠢的事情,当你看到这条信息时,99%的时间都是准确的

    当然,因为java包是以java开头的。*或者javax。*并不一定意味着它取决于JDK本身。它在安卓系统中可能工作得非常好。要绕过愚蠢检查,请将core library选项添加到dx。将$ANDROID_HOME/platform-tools/dx的最后一行从

    exec java $javaOpts -jar "$jarpath" "$@"
    

    为了

    exec java $javaOpts -jar "$jarpath"  core-library "$@"
    

    在我的例子中,我包括了一个依赖于Jackson的库,它依赖于JAXB。对我来说,重写愚蠢性检查是可以接受的,因为该库对Jackson的使用仅用于JSON,而不用于XML序列化(我只包括JAXB API库,而不包括impl)。当然,我希望有一个更干净的方法来实现这一点,但重新编写顶级库以避免使用Jackson不是一个选项