Java 在Gradle资源文件夹中导入的XSD可以';不能被SAX读取
我已经用Schemagen生成了XSD验证文件 有一个单文件验证XSD和一个带有导入的两文件验证XSD 在我的Java应用程序中包含一个文件验证XSD文件,以便从gradle资源文件夹进行验证是没有问题的。但是,如果我尝试从gradle资源文件夹(如下所示)加载带有导入的两个文件验证XSD,它将崩溃,并出现以下错误:Java 在Gradle资源文件夹中导入的XSD可以';不能被SAX读取,java,validation,jaxb,xsd,gradle,Java,Validation,Jaxb,Xsd,Gradle,我已经用Schemagen生成了XSD验证文件 有一个单文件验证XSD和一个带有导入的两文件验证XSD 在我的Java应用程序中包含一个文件验证XSD文件,以便从gradle资源文件夹进行验证是没有问题的。但是,如果我尝试从gradle资源文件夹(如下所示)加载带有导入的两个文件验证XSD,它将崩溃,并出现以下错误: org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 98; src-resolve: Name "ns1:s
org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 98; src-resolve:
Name "ns1:stringArray" kann nicht als "type definition"-Komponente aufgelöst werden.
Means in english: name can't be resolved as type definition component
如果两个文件验证XSD位于gradle源文件夹中,那么它工作正常,因此除了解析导入位置外,文件中不会有任何错误
我的XSD文件如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="" xmlns:ns1="http://jaxb.dev.java.net/array"
xmlns:tns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://jaxb.dev.java.net/array" schemaLocation="schema2.xsd"/>
<xs:element name="Degrees" type="tns:degreeCourse"/>
<xs:complexType name="degreeCourse">
<xs:sequence>
<xs:element name="e" type="ns1:stringArray" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
尽管在import语句中的模式位置之前使用src/main/resources没有帮助。有什么想法吗?我的实际解决方案是将所有内容放在一个文件中,但我仍然找不到导入文件的解决方案。
Schema schema = schemaFactory
.newSchema(getStreamSourceOfSchema("schema1.xsd"));
private StreamSource getStreamSourceOfSchema(String schemaName) {
return new StreamSource(this.getClass().getResourceAsStream(
"/" + schemaName));
}