簡體   English   中英

線程“main”中的異常java.lang.ExceptionInInitializerError引起:javax.xml.bind.DataBindingException:javax.xml.bind.JAXBException

[英]Exception in thread “main” java.lang.ExceptionInInitializerError Caused by: javax.xml.bind.DataBindingException: javax.xml.bind.JAXBException

如果我的問題格式不正確或缺少信息,請道歉。 請告訴我,我會根據需要進行編輯。

我是一名試圖使用java工具分析數據的生物學家( https://omics.pnl.gov/software/ms-gf )。 我沒有使用java編程的經驗。 我用以下命令運行程序:

java -classpath /path/to/MSGFPlus.jar -Xmx3500M -jar /path/to/MSGFPlus.jar -s /path/to/datafile1 -d /path/to/datafile2

程序運行但在最后階段失敗,並產生以下錯誤。 從谷歌搜索我發現這個解釋:“線程中的異常”主“java.lang.NoClassDefFoundError:意味着,在類路徑中找不到您嘗試運行的類。解決方案:您需要添加類或.jar包含此類的文件到java類路徑中。“

我按照建議將jar文件添加到類路徑中,使用export CLASSPATH="/path/to/MSGFPlus.jar"並在上面的java調用中聲明它。 既沒有修復錯誤。

有關如何解決此問題的任何見解?

Exception in thread "main" java.lang.ExceptionInInitializerError
    at uk.ac.ebi.jmzidml.model.utils.ModelConstants.<clinit>(ModelConstants.java:50)
    at uk.ac.ebi.jmzidml.xml.jaxb.marshaller.MarshallerFactory.initializeMarshaller(MarshallerFactory.java:35)
    at uk.ac.ebi.jmzidml.xml.io.MzIdentMLMarshaller.marshal(MzIdentMLMarshaller.java:100)
    at uk.ac.ebi.jmzidml.xml.io.MzIdentMLMarshaller.marshal(MzIdentMLMarshaller.java:91)
    at edu.ucsd.msjava.mzid.MZIdentMLGen.writeResults(MZIdentMLGen.java:143)
    at edu.ucsd.msjava.mzid.MZIdentMLGen.writeResultsOriginal(MZIdentMLGen.java:130)
    at edu.ucsd.msjava.mzid.MZIdentMLGen.writeResultsCleanerTempFile(MZIdentMLGen.java:214)
    at edu.ucsd.msjava.mzid.MZIdentMLGen.writeResults(MZIdentMLGen.java:113)
    at edu.ucsd.msjava.ui.MSGFPlus.runMSGFPlus(MSGFPlus.java:399)
    at edu.ucsd.msjava.ui.MSGFPlus.runMSGFPlus(MSGFPlus.java:106)
    at edu.ucsd.msjava.ui.MSGFPlus.main(MSGFPlus.java:57)
Caused by: javax.xml.bind.DataBindingException: javax.xml.bind.JAXBException
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
    at javax.xml.bind.JAXB.unmarshal(JAXB.java:186)
    at uk.ac.ebi.jmzidml.MzIdentMLElement.loadProperties(MzIdentMLElement.java:1102)
    at uk.ac.ebi.jmzidml.MzIdentMLElement.<init>(MzIdentMLElement.java:989)
    at uk.ac.ebi.jmzidml.MzIdentMLElement.<clinit>(MzIdentMLElement.java:39)
    ... 11 more
Caused by: javax.xml.bind.JAXBException
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:241)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:455)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:652)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:599)
    at javax.xml.bind.JAXB$Cache.<init>(JAXB.java:127)
    at javax.xml.bind.JAXB.getContext(JAXB.java:154)
    at javax.xml.bind.JAXB.unmarshal(JAXB.java:183)
    ... 14 more
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    at javax.xml.bind.ContextFinder.safeLoadClass(ContextFinder.java:573)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:239)
    ... 20 more

令人驚訝的是,我設法解決了它!

對於遇到相同問題的任何人,解決方案是遵循這里的建議如何在Java 9中解決java.lang.NoClassDefFoundError:javax / xml / bind / JAXBException 具體來說,添加--add-modules java.xml.bind

結束工作的最后一個電話是

java --add-modules java.xml.bind -classpath /path/to/MSGFPlus.jar -Xmx3500M -jar /path/to/MSGFPlus.jar -s /path/to/datafile1 -d /path/to/datafile2 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM