프로젝트에서 웹 서비스를 사용해야합니다. NetBeans를 사용하여 프로젝트를 마우스 오른쪽 단추로 클릭하고 새 “웹 서비스 클라이언트”를 추가하려고했습니다. 마지막으로 확인했을 때 이것이 웹 서비스 클라이언트를 만드는 방법이었습니다. 그러나 결과적으로 AssertionError가 발생했습니다.
java.lang.AssertionError : org.xml.sax.SAXParseException; systemId : jar : 파일 : /path/to/glassfish/modules/jaxb-osgi.jar! /com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; 줄 번호 : 52; columnNumber : 88; schema_reference : accessExternalSchema 특성에 의해 설정된 제한으로 인해 ‘file’액세스가 허용되지 않으므로 스키마 문서 ‘ xjc.xsd ‘ 를 읽지 못했습니다 .
NetBeans의 기본 Java 플랫폼은 JDK8 (Oracle의 공식 버전)이므로 netbeans.conf 파일을 변경하고 Oracle의 JDK7을 기본값으로 만들면 모든 것이 제대로 작동했습니다. JDK8에 문제가 있다고 생각합니다. 내 java -version
출력 은 다음과 같습니다 .
Java 버전 “1.8.0”
Java (TM) SE 런타임 환경 (빌드 1.8.0-b132)
Java HotSpot ™ 64 비트 서버 VM (빌드 25.0-b70, 혼합 모드)
지금은 JDK7을 기본 Java 플랫폼으로 유지하고 있습니다. JDK8을 작동시키는 방법이 있다면 공유하십시오.
답변
글쎄, 나는 해결책을 찾았다. ( http://docs.oracle.com/javase/7/docs/api/javax/xml/XMLConstants.html#ACCESS_EXTERNAL_SCHEMA 기반 )
jaxp.properties
아래에 (존재하지 않는 경우) 파일을 생성 한 /path/to/jdk1.8.0/jre/lib
후 다음 줄을 작성하십시오 :
javax.xml.accessExternalSchema = all
그게 다야. JDK 8을 즐기십시오.
답변
실제 답변은 아니지만 참고 자료입니다.
jaxws Maven 플러그인을 사용하고 동일한 오류 메시지가 표시되면 언급 된 특성을 플러그인 구성에 추가하십시오.
...
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<configuration>
<!-- Needed with JAXP 1.5 -->
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
</configuration>
</plugin>
답변
Eclipse IDE (Windows 7 x64의 경우 4.4, Luna)에서 ant 빌드를 실행합니다. 설치된 JRE lib 또는 개미 스크립트를 수정하는 대신 (빌드에 XJC를 포함하는 여러 프로젝트가 있음) Eclipse 설정 “외부 도구 구성”을 변경하고 Ant 빌드 구성의 VM 인수에 다음을 추가하는 것이 좋습니다.
-Djavax.xml.accessExternalSchema=all
답변
다음은 jdk 1.8.0_66에 포함 된 wsimport 2.2.9에서 작동합니다.
wsimport -J-Djavax.xml.accessExternalSchema=all ....
답변
내 경우에는 다음을 추가하십시오.
javax.xml.accessExternalSchema = all
jaxp.properties에 작동하지 않았으므로 다음을 추가했습니다.
javax.xml.accessExternalDTD = all
내 환경은 리눅스 민트 17과 자바 8 오라클입니다. 같은 문제를 가진 사람들을위한 답으로 여기에 넣겠습니다.
답변
아티팩트 org.codehaus.mojo의 2.4 버전에서 이것을 테스트했으며 작동했습니다 ~
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlDirectory>path/to/dir/wsdl</wsdlDirectory>
</configuration>
<id>wsimport-web-service</id>
<phase>generate-sources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api</artifactId>
<version>${webservices-api-version}</version>
</dependency>
</dependencies>
<configuration>
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
<sourceDestDir>generated-sources/jaxws-wsimport</sourceDestDir>
<xnocompile>true</xnocompile>
<verbose>true</verbose>
<extension>true</extension>
<sei>/</sei>
</configuration>
</plugin>
</plugins>
답변
다음은 관리자 권한이없는 gradle 사용자를위한 힌트입니다.이 행을 jaxb-task에 추가하십시오.
System.setProperty('javax.xml.accessExternalSchema', 'all')
다음과 같이 보일 것입니다 :
jaxb {
System.setProperty('javax.xml.accessExternalSchema', 'all')
xsdDir = "${project.name}/xsd"
xjc {
taskClassname = "com.sun.tools.xjc.XJCTask"
args = ["-npa", "-no-header"]
}
}
