XSD SchemaFactory错误-Java 6

XSD SchemaFactory错误-Java 6,xsd,xerces,java-6,Xsd,Xerces,Java 6,在下面的代码中,我尝试验证XML。当我从eclipse运行它时,一切都正常。当我在weblogic上部署它时,代码失败并出现错误:“处理时SAX异常rc resolve:无法将名称XX:sometag解析为(n)“类型定义”组件。” 这是eclipse for Schema Factory上生成的输出: schemaFactory->class com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory 在Weblogi

在下面的代码中,我尝试验证XML。当我从eclipse运行它时,一切都正常。当我在weblogic上部署它时,代码失败并出现错误:“处理时SAX异常rc resolve:无法将名称XX:sometag解析为(n)“类型定义”组件。”

这是eclipse for Schema Factory上生成的输出: schemaFactory->class com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory

在Weblogic上,使用相同JAR文件的相同代码会出现上述错误。schemaFactory是完全相同的

配置-2

我尝试将系统属性设置为加载xerces文件,并将xerces添加到类路径中

String schemaFactoryProperty = "javax.xml.validation.SchemaFactory:" + XMLConstants.W3C_XML_SCHEMA_NS_URI;
System.setProperty(schemaFactoryProperty,"org.apache.xerces.jaxp.validation.XMLSchemaFactory");  
模式工厂的输出仍然保持不变:“schemaFactory->class com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory”,但这次错误更改为:

java.lang.IllegalArgumentException: Source parameter of type 'javax.xml.transform.stream.StreamSource' is not recognized this SchemaFactory.
    at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:203)
    at com.bt.asi.task.AffectedServiceTask.execute(AffectedServiceTask.java:47)
    at com.bt.asi.service.ASIJMSService.onMessage(ASIJMSService.java:30)
    at... 
我使用的是Java 6和WLS 10.3.0(Java 6),使用的是Spring框架。

让它工作了(4小时后!!!)

关于它工作的本地原因:模式是从文件夹加载的,因此XSD中的导入可以正常工作

在服务器上,我放入了一个jar文件,所以sourceLocation=“SomeFile.xsd”从未用于生成文件,因为实际路径是URI

是什么修复了它: 1) 我更改了加载模式的顺序(从无导入-->所有导入),以确保当前xsd编译时,它的所有依赖项都已在schemaFactory中(这是可能的,因为我没有nexted导入,所以我有一个明确的先加载哪个文件的顺序,依此类推)

2) 我还可以做的是将所有XSD合并到一个文件中

3) 或者我可以将XSD保存在web inf/中,然后查找它们,而不是JAR文件。那么导入sourceLocation=“”就会找到该文件

希望这对别人有帮助

干杯。 维韦克

java.lang.IllegalArgumentException: Source parameter of type 'javax.xml.transform.stream.StreamSource' is not recognized this SchemaFactory.
    at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:203)
    at com.bt.asi.task.AffectedServiceTask.execute(AffectedServiceTask.java:47)
    at com.bt.asi.service.ASIJMSService.onMessage(ASIJMSService.java:30)
    at...