java - JDK 8 中的 JAXB 问题
问题描述
我正在尝试在 jdk1.8.0_162 中使用 JAXB 解组 XML 字符串有效负载,同时尝试获取 JAXBContext.newInstance,我得到 javax.xml.bind.JAXBException - 带有链接异常:[java.lang.ClassNotFoundException:oracle.xml。 jaxb.JaxbContextImpl],任何输入都会很棒!
我尝试根据来自各种 stackoverflow 论坛的不同建议在我的 pom.xml 中添加以下依赖项,但似乎没有任何效果:
<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)
解决方案
推荐阅读
- ruby-on-rails - Arel 查询值在两列之间的位置
- python - 在 .INI 文件中将变量值更改为浮点数
- c# - 设置 DataGridView 列属性需要太长时间
- python - Pandas DataFrame 在嵌套 JSON 中组合某些列
- sql - 子查询返回超过 1 个值。当子查询跟随=时不允许,但没有使用子查询?
- git - 如何仅 git status (或显示)子模块更改?
- jpa - Vaadin 7、JPA 2 和表单绑定
- python-3.x - 如何将 2 列数据框转换为 Series--Pandas
- android - 在 Android Studio、Ubuntu 中更改 JDK
- virtualbox - VirtualBox 选择的空间从未返回