我正在尝试使用JAXB将XML数据反序列化为Java内容树,在解组时验证XML数据:
try {
JAXBContext context = JAXBContext.newInstance("com.acme.foo");
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setSchema(schema);
FooObject fooObj = (FooObject) unmarshaller.unmarshal(new File("foo.xml"));
} catch (UnmarshalException ex) {
ex.printStackTrace();
} catch (JAXBException ex) {
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
当我使用Java 8构建项目时,它很好,但使用Java 11构建它失败并出现编译错误:
package javax.xml.bind does not exist
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我正在开发Eclipse中的Maven项目(branch platform-bom_brussels-sr7).当我最近尝试切换Java构建路径,为项目JDK 10,Eclipse构建再也找不到类,如javax.xml.xpath.XPath,org.w3c.dom.Document或org.xml.sax.SAXException.似乎只有XML相关的类受到影响,主要来自Maven依赖xml-apis-1.4.01.
从Eclipse中尝试Maven构建工作没有错误.Ctrl-LeftClick上一个假定缺失的类找到该类并在Eclipse编辑器中打开它.似乎只有Eclipse构建受到影响.
我尝试了几件事,但都没有帮助.我试过了:
我正在尝试从生成的源创建一个bean wsdl2java。
每次我尝试运行Spring Boot应用程序时,都会出现以下错误:
造成原因:java.lang.ClassCastException:org.apache.cxf.endpoint.ClientImpl类无法转换为com.xignite.services.XigniteCurrenciesSoap类(org.apache.cxf.endpoint.ClientImpl和com.xignite.services.XigniteCurrenciesSoap是在加载程序“ app”的未命名模块中)
我不确定我到底如何将生成的源作为模块包含在主Spring Boot应用程序中。
我的目录结构是:
??? build
? ??? generatedsources
? ??? src
? ??? main
? ??? java
? ??? com
? ??? xignite
? ??? services
?
??? src
??? main
??? java
? ??? io
? ??? mateo
? ??? stackoverflow
? ??? soapconsumption
??? resources
??? wsdls
Run Code Online (Sandbox Code Playgroud)
相关系统信息:
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我无法将org.w3c.dom.NodeList包导入到Eclipse。它显示
可以从多个模块中访问org.w3c.dom包:
<unnamed>eclipse中的“ java.xml”错误消息。
请让我知道如何解决此问题?
Eclipse版本:
适用于企业Java开发人员的Eclipse IDE。
版本:2019-06(4.12.0)
版本号:20190614-1200
Java版本:
java版本“ 12.0.1” 2019-04-16
Java(TM)SE运行时环境(内部版本12.0.1 + 12)
Java HotSpot(TM)64位服务器VM(内部版本12.0.1 + 12,混合模式,共享)
我有编译错误:The package javax.xml.stream is accessible from more than one module: <unnamed>, java.xml。应用程序已maven install成功构建,但它不作为 java 应用程序运行。
CTRL + SHIFT + T 显示该javax.xml.stream包是 JDK-11(模块路径)和(类路径)的一部分stax-api。
stax-api是父模块的依赖项,无法删除。此问题出现在 Eclipse 2019-12、2020-03、2020-06 和 IntelliJ 以及不同版本的 Java 11 上。
到目前为止,我尝试排除 child 中的所有依赖项的 javax.xml.stream
<exclude>javax.xml.stream</exclude>
但没有成功。
我该如何解决这个问题?
故事:
我使用 JDK8 和 IVY 作为 ANT Builder 的依赖管理器。一切都很好。我的DocumentBuilderFactory 班级能够找到javax.xml.parsers依赖关系。
问题:
现在我转移到 Open JDK11,现在DocumentBuilderFactory无法找到javax.xml.parsers依赖项。
Eclipse 给了我导入建议,但是当我导入时没有任何反应,并且导入已经表示导入 javax.xml.parsers.DocumentBuilder 无法
像这样解析:

我需要什么解决方案:
我需要 Open JDK 11 的 IVY 依赖项来 javax.xml.parsers支持DocumentBuilderFactory
java ×5
eclipse ×2
java-module ×2
dom ×1
ivy ×1
java-10 ×1
java-11 ×1
java-12 ×1
java-9 ×1
jaxb ×1
maven ×1
openjdk-11 ×1
spring-boot ×1
w3c ×1