【问题标题】:Can't use XMLGregorianCalendar in Android, even if it is documented?不能在 Android 中使用 XMLGregorianCalendar,即使它已记录在案?
【发布时间】:2011-10-27 15:37:26
【问题描述】:

我真的无法理解这一点:看起来 Android 有 XMLGregorianCalendar 类,因为它记录在 here。 但是,如果您继续尝试使用它,那就是您得到的:

10-27 17:21:43.677: E/AndroidRuntime(14850): Caused by: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl not found
10-27 17:21:43.677: E/AndroidRuntime(14850):    at javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:102)

这样就行了:

DatatypeFactory datatype = DatatypeFactory.newInstance();

你猜怎么着,它不应该像官方Android Javadoc中记录的那样表现。

这看起来是关于 Android 的不那么聪明的事情之一。你为什么要记录一些不能使用的东西? 有没有人对此有解决方案,可能不包括重新包装?

【问题讨论】:

  • 这会在哪个 Android 版本上崩溃?
  • Nexus One 上的 Android 2.3.3 Gingerbread。
  • 嗯,这个想法是有的。我会继续寻找。

标签: android datetime w3c xml-deserialization


【解决方案1】:

看起来即使它从 v8 开始就在 API 中,no version of Android has ever shipped with an implementation。很方便,对吧?

一种解决方案是下载Xerces2 Java implementation jar 并将其包含在项目的构建路径中。

您的代码只会略有不同:

DatatypeFactory datatype = DatatypeFactoryImpl.newInstance();

【讨论】:

  • 我已将 xercesImpl.jar 包含在我的构建路径中并复制到 lib 目录,但我仍然收到错误 Caused by: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl not found。我还应该做些什么来让它工作吗?
  • 你可以试试这个链接。它包含数据类型 jar 尤其适用于 android grepcode.com/file/repo1.maven.org/maven2/org.odftoolkit/…
  • @MartinNuc 你能解决上面提到的问题吗?我也遇到了同样的问题,你能建议我任何解决方案吗?
  • @Neha 对不起,我不记得了 :(
  • @Neha @Martin 在项目中包含 .jar 后,您需要确保使用的是 DatatypeFactoryImpl.newInstance() 而不是 DataTypeFactory.newInstance()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 2017-02-10
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多