gpt4 book ai didi

netbeans - Netbeans 模块中的 JAXB

转载 作者:行者123 更新时间:2023-12-02 22:02:35 25 4
gpt4 key购买 nike

当我尝试在 netbeans 模块中运行 JAXB 编码器时,它们似乎是一个问题。最初我以为这是节点实现,所以我花了几天时间重新组织一切,但我仍然收到奇怪的错误消息

javax.xml.bind.JAXBException: ClassCastException: attempting to cast jar:file:/C:/Program%20Files/jmonkeyplatform/ide/modules/ext/jaxb/api/jaxb-api.jar!/javax/xml/bind/JAXBContext.class to jar:file:/C:/Program%20Files/Java/jdk1.6.0_21/jre/lib/rt.jar!/javax/xml/bind/JAXBContext.class.  Please make sure that you are specifying the proper ClassLoader.    
at javax.xml.bind.ContextFinder.handleClassCastException(ContextFinder.java:96)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:205)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)
at com.spectre.util.JAXBImporterExporter.write(JAXBImporterExporter.java:63)

我不太确定问题是什么,导入器/导出器似乎在正常项目中工作,并且导入器在解析文件时似乎工作正常,但导出似乎会导致问题。我使用的导出方法是

 public static <T> void write(T savable, Class<T> type,Object path) {
try {
JAXBContext jc = JAXBContext.newInstance(type);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
if(path instanceof File)
marshaller.marshal(savable, (File)path);
else if(path instanceof OutputStream){
marshaller.marshal(savable, (OutputStream)path);
}else throw new NoSuchMethodException("The Field Path must be of either type File or OutputStream");
} catch (NoSuchMethodException ex) {
Exceptions.printStackTrace(ex);
} catch (JAXBException ex) {
Exceptions.printStackTrace(ex);
}
}

感谢任何帮助

最佳答案

一个简单的解决方案是添加对属于 NetBeans 的 org.netbeans.modules.xml.jaxb.api 模块的模块依赖项。这将避免两个版本的 JAXB 类之间的冲突(一个来自 JDK,另一个来自运行时首选的模块)。

关于netbeans - Netbeans 模块中的 JAXB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7189967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com