webservice生成客户端文件报错

E:\soft\Java\JDK1.8\bin\java.exe -classpath E:\code\test\out\production\test;E:\code\test\lib\ha-api.jar;E:\code\test\lib\javax.annotation.jar;E:\code\test\lib\gmbal-api-only.jar;E:\code\test\lib\FastInoset.jar;E:\code\test\lib\jaxb-api.jar;E:\code\test\lib\jaxb-impl.jar;E:\code\test\lib\jaxws-api.jar;E:\code\test\lib\jsr181-api.jar;E:\code\test\lib\jaxws-tools.jar;E:\code\test\lib\jaxb-xjc.jar;E:\code\test\lib\jaxws-rt.jar;E:\code\test\lib\management-api.jar;E:\code\test\lib\mail.jar;E:\code\test\lib\policy.jar;E:\code\test\lib\saaj-api.jar;E:\code\test\lib\mimepull.jar;E:\code\test\lib\stax2-api.jar;E:\code\test\lib\saaj-impl.jar;E:\code\test\lib\stax-ex.jar;E:\code\test\lib\streambuffer.jar;E:\code\test\lib\woodstox-core-asl.jar;E:\soft\Java\JDK1.8\lib\tools.jar;E:/code/test/out/production/test -Xmx128M com.sun.tools.ws.WsImport -p com -d E:\code\test\src -s E:\code\test\src -extension -wsdllocation http://zjjtest.sz.gov.cn/message/construct-platform/service/SMSService?wsdl http://zjjtest.sz.gov.cn/message/construct-platform/service/SMSService?wsdl
���ڽ��� WSDL...


Exception in thread "main" java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: jar:file:/E:/code/test/lib/jaxb-xjc.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52; columnNumber: 88; schema_reference: ���� accessExternalSchema 由于 accessExternalSchema 属性设置的限制而不允许 'file' 访问, 因此无法读取方案文档 'xjc.xsd'。
at com.sun.tools.xjc.SchemaCache.newValidator(SchemaCache.java:80)
at com.sun.tools.xjc.reader.internalizer.SCDBasedBindingSet.apply(SCDBasedBindingSet.java:237)
at com.sun.tools.xjc.ModelLoader.createXSOM(ModelLoader.java:541)
at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:269)
at com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:95)
at com.sun.tools.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBModelBuilder.java:142)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WSDLModeler.java:2244)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.java:191)
at com.sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:137)
at com.sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:391)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:204)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.tools.ws.Invoker.invoke(Invoker.java:135)
at com.sun.tools.ws.WsImport.main(WsImport.java:57)
Caused by: org.xml.sax.SAXParseException; systemId: jar:file:/E:/code/test/lib/jaxb-xjc.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52; columnNumber: 88; schema_reference: ���� accessExternalSchema �������õ����ƶ������� 'file' ����, ����޷���ȡ�����ĵ� 'xjc.xsd'��
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4154)
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaFatalError(XSDHandler.java:4133)
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2174)
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.resolveSchema(XSDHandler.java:2084)
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.constructTrees(XSDHandler.java:1014)
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:625)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:610)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:569)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:535)
at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:254)
at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:638)
at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:670)
at com.sun.tools.xjc.SchemaCache.newValidator(SchemaCache.java:77)
... 17 more
Done

 

问题描述
配置JDK版本和JRE版本为1.8.0_151。
使用IDEA开发WebService客户端时遇到这个问题。
在终端使用命令java -version

Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=gasp
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)


可以看到第一行有设置_JAVA_OPTIONS,按照其他教程中所说的配置/etc/profile文件,追加一行unset JAVA_TOOL_OPTIONS并不能起到作用。(很可能是操作系统的原因)

问题原因
使用JDK和JRE1.8版本时,有这样一个BUG。
详情见https://bugs.openjdk.java.net/browse/JDK-8020999

解决方案
在jdk的安装路径下的jre\lib下(我的路径为/usr/local/jdk1.8.0_151/jre/lib),添加一个属性文件jaxp.properties,并写上如下内容javax.xml.accessExternalSchema = all

posted on 2020-01-10 15:02  丶柚子  阅读(740)  评论(0编辑  收藏  举报

导航