他們似乎是一個問題,當我嘗試在NetBeans模塊中運行JAXB編組器。本來我以爲是節點執行力度,所以我花了幾天的重組一切,但是我仍然recieveing奇怪的錯誤消息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);
}
}
任何援助表示讚賞
我發現它似乎是在運行時使用2個不同的類加載器的問題,但我似乎無法找到正確的修復方法。我相信它可以與另一個構造函數幫助,但我似乎無法弄清楚應該包含什麼作爲第一個參數contextPath並將其設置爲空或空字符串似乎會導致和發出 'JAXBContext jc = JAXBContext.newInstance(「 「,JAXBImporterExporter.class.getClassLoader());' – kdgwill
請將回答作爲答案發布,不要放在您的問題中。底部有一個「回答你的問題」按鈕。也沒有必要在標題或其他內容中喊出「ANSWERED」。只要時間成熟,就要接受答案。看,這是一個問答網站,而不是討論論壇或類似原始的東西:) – BalusC
好吧我昨天早上想出了它,因爲沒有人回答或評論所有我認爲這是可以發佈其中一個解決方案以來有人投了個問題 – kdgwill