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

软件包com.sun.xml.internal.bind.marshaller不存在
导入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 bundle 在您的应用程序中(这样可以保护您的权益) JAXB中Java SE中的更改)。

10-02 11:42