android javax.xml.bind gson和@XmlSchemaType

时间:2012-12-17 19:30:23

标签: java android jaxb gson

我有一个客户提供的xsd我无法改变。我正在使用jaxb来生成类。结果类有一个注释,如:

@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar expires;

我尝试使用GSON将其转换为json,并获得javax.xml.bind.XmlSchemaType的classnotfoundexception。我在maven pom.xml中添加了javax.xml.bind的依赖项:

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.xml.bind</artifactId>
    <version>3.0-b54</version>
    <scope>compile</scope>
</dependency>

然后我得到了这个疯狂的错误:

  

尝试在其他内容中包含核心类(java。*或javax。*)   而不是核心库。您可能尝试包含此内容   在应用程序中,来自桌面的核心库(或其一部分)   虚拟机。这肯定是行不通的。至少,它   危及您的应用程序与未来版本的兼容性   平台。它的合法性通常也是有问题的。

     

如果你真的打算建立一个核心库 - 这只是   适合作为创建完整虚拟机分发的一部分,   而不是编译应用程序 - 然后使用   “--core-library”选项可以禁止显示此错误消息。

     

如果你继续使用“--core-library”但实际上正在构建一个   应用程序,然后预先警告您的应用程序仍将失败   在某些时候建立或运行。请为愤怒的顾客做好准备   例如,谁发现你的申请不再运作一次   他们升级他们的操作系统。你应该为此负责   问题

     

如果您合法地使用恰好位于核心中的某些代码   包装,那么最简单的安全替代方案就是重新包装   那段代码。也就是说,将有问题的类移动到您自己的包中   命名空间。这意味着它们永远不会与核心发生冲突   系统类。如果你发现你不能这样做,那就是一个   表明您所在的路径最终会导致疼痛,   痛苦,悲伤和悲伤。

!!!

我要么跳过注释,告诉jaxb不生成它们或gson忽略它们或正确导入依赖。

1 个答案:

答案 0 :(得分:0)

<scope>provided</scope>

解决了我的问题 - 我不知道javax。*下的所有内容都是由android提供的。