1

我在 Android Studio 中遇到了一个奇怪的问题。我也在使用最新的 JDK。我似乎无法导入以下内容:

  • javax.xml.stream
  • javax.xml.transform.stax

它们都无法使用,我不知道为什么。在非 android 项目中,我可以导入这些。任何线索为什么这些在android中丢失?

如果没有,简单的解决方案是我从 maven 添加了这些依赖项。但运行后我收到此错误:

“在不构建核心库时,不明智或错误地使用核心类(java.* 或 javax.*)。

4

1 回答 1

0

Android 不使用与桌面或服务器应用程序相同的 Java JDK;它使用自己的 JDK 实现,它增加了android.*层次结构,但遗漏了标准 JDK 中的一些包,特别是在javax.*Java 扩展中。对你来说很不幸,javax.xml.stream并且javax.xml.transform.stax是他们没有选择实施的事情之一。此外,出于安全原因,Android 运行时不允许您从外部 JAR 文件加载任何类java.*或类**。这个答案可能会更好地描述这种情况。javax.*

您最好的选择可能是:1)使用专门为 Android 构建的不同第三方库,例如SimpleXML;2) 寻找库的重新打包版本,就像这个 JAXB 工作;或 3) 使用Jar Jar Links之类的工具为您重新打包。

另请参阅有关在 Android 中解析 JSON 和 XML 的优秀指南

** 注意:我找不到任何来自 Google 的文档来证实这一点;这只是一个经常重复的“事实”。如果有人可以指出有关 Android 处理第三方java[x].*类的权威声明,请使用链接发表评论,或编辑此答案。

于 2017-06-16T16:36:21.613 回答