我有一个客户提供的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忽略它们或正确导入依赖。
答案 0 :(得分:0)
<scope>provided</scope>
解决了我的问题 - 我不知道javax。*下的所有内容都是由android提供的。