我一直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不会突出显示错误代码.
任何帮助,将不胜感激!
Pas*_*ent 18
我不认为这个课程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更改).
Dan*_*eón 16
该NamespacePrefixMapper不再是不可用的.
使用注释package-info.java:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://nameSpaceUri"
, xmlns = {
@XmlNs(prefix = "myPrefix", namespaceURI = "http://nameSpaceUri")
}
, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package my.package.;
Run Code Online (Sandbox Code Playgroud)
这适用于与JDK7捆绑在一起的JAXB,用于其他JDK版本更新JAXB到2.2.4.
您不应该com.sun.**直接使用类。它们被视为内部的,如有更改,恕不另行通知。(看看刚刚发生了什么!!)internal包名中包含新类的事实是一个更大的提示!
我强烈建议你寻找一种更好的方式来做你正在做的事情......不使用com.sun.**类。
编辑- 嗯,看起来负责 JAXB RI 的人违反了 Sun 关于该扩展包名称的规则!而且很遗憾,Sun 没有在 JDK 6.0 中实现这个特殊的 RI 扩展。
| 归档时间: |
|
| 查看次数: |
48874 次 |
| 最近记录: |