包com.sun.xml.internal.bind.v2.model.annotation不存在

我正在尝试使用jaxb序列化exception的解决方案。 ( http://forums.java.net/jive/thread.jspa?messageID=256122 )

我需要为该解决方案实现的类需要引用以下com.sun类。

import com.sun.xml.internal.bind.v2.model.annotation.AbstractInlineAnnotationReaderImpl; import com.sun.xml.internal.bind.v2.model.annotation.Locatable; import com.sun.xml.internal.bind.v2.model.annotation.RuntimeAnnotationReader; import com.sun.xml.internal.bind.v2.model.annotation.RuntimeInlineAnnotationReader; 

当我在Eclipse中编译并运行我的代码时,它工作正常。 但是当我使用Maven编译代码时,它无法抱怨com.sun包,例如“package com.sun.xml.internal.bind.v2.model.annotation不存在”。

eclipse和maven都使用JDK 1.6,所以我不明白为什么会这样。 JDK中不是那些com.sun类吗?

编辑:我最终决定它是不可能的。 我只是创建了一个新的bean并复制了我需要的信息并使用了它。

如果一个类在com.sun。*包中,它只是意味着它是由Sun开发的,而不是它是JDK的一部分。

JDK中的Sun类是前缀sun。*并且不是公共支持的接口的一部分,因此应谨慎使用。 来自太阳常见问题 :

Sun包含在Java 2 SDK标准版中的类属于包组java。 ,javax。 ,org。*和太阳。 除了太阳以外的所有。 软件包是Java平台的标准部分,将来会得到支持。 一般来说,包如太阳。 ,在Java平台之外,可以在OS平台(Solaris,Windows,Linux,Macintosh等)上有所不同,并且可以随时更改,而无需通知SDK版本(1.2,1.2.1,1.2.3等) )。 包含对太阳的直接调用的程序。 包不是100%纯Java。 换一种说法:

java。 ,javax。 Java 2平台标准版API规范中记录的org。*包构成了官方的,受支持的公共接口。

如果Java程序直接调用这些包中的API,它将在所有兼容Java的平台上运行,而不管底层的OS平台如何。

sun。*包不是受支持的公共界面的一部分。

直接调用sun。*包的Java程序不能保证在所有兼容Java的平台上运行。 实际上,即使在同一平台上的未来版本中,也不能保证这样的程序能够工作。

话虽如此,您列出的那些类在以下工件中的JBoss存储库中可用:

  javax.xml jaxb-impl 2.1