【问题标题】:package com.sun.xml.internal.bind.v2.model.annotation does not existcom.sun.xml.internal.bind.v2.model.annotation 包不存在
【发布时间】:2009-08-12 23:44:14
【问题描述】:

我正在尝试使用 jaxb 序列化异常的解决方案。 (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 包,例如“包 com.sun.xml.internal.bind.v2.model.annotation 不存在”。

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

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

【问题讨论】:

    标签: java maven-2 jaxb exception


    【解决方案1】:

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

    JDK 中的 Sun 类以 sun.* 为前缀,并且不是公共支持接口的一部分,因此应谨慎使用。来自Sun FAQ

    Sun 在 Java 2 SDK 标准版中包含的类属于包组 java.、javax.、org.* 和 sun.。除了 sun. 包之外的所有包都是 Java 平台的标准部分,并且将在未来得到支持。通常,Java 平台之外的软件包(例如 sun.)在不同的操作系统平台(Solaris、Windows、Linux、Macintosh 等)之间可能会有所不同,并且可能随时更改 SDK 版本,恕不另行通知( 1.2、1.2.1、1.2.3 等)。包含对 sun 的直接调用的程序。 包不是 100% 纯 Java。换句话说:

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

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

    sun.* 包不是受支持的公共接口的一部分。

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

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

    <dependency>
      <groupId>javax.xml</groupId>
      <artifactId>jaxb-impl</artifactId>
      <version>2.1</version>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 2011-12-21
      • 2013-11-21
      相关资源
      最近更新 更多