Java jdk8中的JAXB问题
我试图在jdk1.8.0¢中使用JAXB解组XML字符串有效负载,同时尝试获取JAXBContext.newInstance,我获取javax.XML.bind.JAXBException-带有链接异常:[java.lang.ClassNotFoundException:oracle.XML.JAXB.JaxbContextImpl],任何输入都会很棒 我根据来自各种stackoverflow论坛的不同建议,尝试在pom.xml中添加以下依赖项,但似乎没有任何效果:Java jdk8中的JAXB问题,java,java-8,jaxb,Java,Java 8,Jaxb,我试图在jdk1.8.0¢中使用JAXB解组XML字符串有效负载,同时尝试获取JAXBContext.newInstance,我获取javax.XML.bind.JAXBException-带有链接异常:[java.lang.ClassNotFoundException:oracle.XML.JAXB.JaxbContextImpl],任何输入都会很棒 我根据来自各种stackoverflow论坛的不同建议,尝试在pom.xml中添加以下依赖项,但似乎没有任何效果: <groupId>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.8</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
Here is the code snippet :
String xml = DownloadTDRReport.downloadTDRReport(sdate);
jc = JAXBContext.newInstance(Report.class);
StringReader reader = new StringReader(xml);
Unmarshaller u = jc.createUnmarshaller();
Report report = (Report)u.unmarshal(reader);
Here is the stack trace :
javax.xml.bind.JAXBException
- with linked exception:
[java.lang.ClassNotFoundException: oracle.xml.jaxb.JaxbContextImpl]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:226)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:390)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
at edu.nyu.paygate.batch.RemittanceProcessEBC20.startProcess(RemittanceProcessEBC20.java:350)
at edu.nyu.paygate.batch.RemittanceProcess.startRemittanceProcess(RemittanceProcess.java:141)
at edu.nyu.paygate.batch.BatchClient.main(BatchClient.java:64)
Caused by: java.lang.ClassNotFoundException: oracle.xml.jaxb.JaxbContextImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at javax.xml.bind.ContextFinder.safeLoadClass(ContextFinder.java:579)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:224)
javax.xml.bind
jaxb api
2.2.8
com.sun.xml.bind
jaxb内核
2.2.11
com.sun.xml.bind
jaxb impl
2.0.2
javax.activation
激活
1.1.1
org.glassfish.jaxb
jaxb运行时
2.3.2
javax.activation
激活
1.1.1
以下是代码片段:
字符串xml=DownloadTDRReport.DownloadTDRReport(sdate);
jc=JAXBContext.newInstance(Report.class);
StringReader=新的StringReader(xml);
解组器u=jc.createUnmarshaller();
报告=(报告)u.unmarshal(阅读器);
以下是堆栈跟踪:
javax.xml.bind.JAXBException
-除此之外:
[java.lang.ClassNotFoundException:oracle.xml.jaxb.JaxbContextImpl]
位于javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:226)
位于javax.xml.bind.ContextFinder.find(ContextFinder.java:390)
位于javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
位于javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
位于edu.nyu.paygate.batch.remitteanceprocessebc20.startProcess(remitteanceprocessebc20.java:350)
位于edu.nyu.paygate.batch.remittenceprocess.startRemittanceProcess(remittenceprocess.java:141)
位于edu.nyu.paygate.batch.BatchClient.main(BatchClient.java:64)
原因:java.lang.ClassNotFoundException:oracle.xml.jaxb.JaxbContextImpl
位于java.net.URLClassLoader.findClass(URLClassLoader.java:381)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:357)
位于javax.xml.bind.ContextFinder.safeLoadClass(ContextFinder.java:579)
位于javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:224)
pom.xml中不需要使用Jaxb依赖项来处理Jdk 8Yes,我之前没有这些依赖项,当我遇到错误时,我开始添加这些依赖项并尝试。JDK1.8中不需要它。我再次删除了它们并尝试了,但仍然得到了相同的错误;JAXB已经包含在Java中。您的应用程序是否在应用程序服务器(GlassFish、JBoss、Tomcat等)上运行?是的,我删除了看到错误后添加的所有依赖项。还是一样的例外。它是一个独立的java应用程序。您也是用Java9还是Java11开发的?确保您的类路径上没有任何其他JAXB版本是偶然的。对于Jdk 8,没有必要在pom.xml中使用JAXB依赖项是的,我之前没有这些依赖项,当我遇到错误时,我开始添加这些依赖项并尝试。JDK1.8中不需要它。我再次删除了它们并尝试了,但仍然得到了相同的错误;JAXB已经包含在Java中。您的应用程序是否在应用程序服务器(GlassFish、JBoss、Tomcat等)上运行?是的,我删除了看到错误后添加的所有依赖项。还是一样的例外。它是一个独立的java应用程序。您也是用Java9还是Java11开发的?确保您的类路径上没有任何其他JAXB版本。