java - JDK6u18 中 JAXB 的 NamespacePrefixMapper 发生了什么

标签 java jaxb

我一直在我的项目中使用 com.sun.xml.bind.marshaller.NamespacePrefixMapper,我在 JDK 6u17 中没有任何问题。现在我刚更新到6u18,我看到它已经被替换为com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper。但是,如果我导入此类并尝试编译我的类,则会收到错误消息:

package com.sun.xml.internal.bind.marshaller does not exist
import com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper;

我可以通过 NetBeans 代码完成功能访问这个包,并且 NetBeans 不会突出显示错误代码。

任何帮助将不胜感激!

最佳答案

我不认为 com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper 类是 com.sun.xml.bind.marshaller.NamespacePrefixMapper,前者已经存在很长时间了,它根本不打算被你使用(因此是 internal 包装)。

这里的问题是 JavaSE 6 没有 JAXB RI(它有 JAXB 实现但没有 JAXB RI)所以如果你想依赖 RI 特定的功能,你应该在你的应用程序中捆绑 JAXB RI(并且将保护您免受 Java SE 中的 JAXB 更改)。

关于java - JDK6u18 中 JAXB 的 NamespacePrefixMapper 发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326107/

相关文章:

java - 将 package-info.java 用于 JAXB

java - 验证失败时包含参数名称的自定义错误消息

java - Gradle Jaxb 插件问题

java - 如何捕获 AssertPathsEqual 并将错误打印到控制台?

java - 在这种情况下如何使用迭代器?

java - 使用 java 写入文件时输出无效

JAXB 生成无效的 Javadoc - @link byte[]

java - 如何从数据库表中存储和检索 RSA 私钥?

java - 为什么这个值的输出结果总是零?

java - 两种不同的架构和 JAXB Marshaller