문제

내가 필요로 웹 서비스를 사용하려면서 프로젝트입니다.내가 사용하는 NetBeans 그래서 나는 마우스 오른쪽 버튼으로 클릭한 내 프로젝트에 추가하려고 했는 새로운"웹 서비스 클라이언트가".마지막 시간을 확인이 만드는 방법은 웹 서비스 클라이언트입니다.그러나 그것은 결과 AssertionError,말하기:

java.랭.AssertionError:org.xml.sax.SAXParseException;시스템:jar:file:/path/to/glassfish/modules/jaxb-osgi.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd;줄 번호:52;columnNumber:88;schema_reference:를 읽지 못했 스키마 문서'xjc.xsd'기 때문에,'파일의 접근은 허용하지 않으로 인해 제한에 의해 설정 accessExternalSchema 을 제공합니다.

기본 자바 플랫폼을 위해 NetBeans 었 JDK8(오라클의 공식 버전),그래서 때 나는 변경된 내 netbeans.conf 파일을 만들어 JDK7(오라클에서,뿐만 아니라)내가 기본적으로 모든 것이 잘 동작.그래서 나는 생각한 문제가 JDK8.여기에 나 java -version 출력:

java version"1.8.0"
Java(TM)SE Runtime Environment(build1.8.0-b132)
Java HotSpot(TM)64-Bit Server VM(build25.0-b70,mixed mode)

지금,나는 유지 JDK7 으로 자바 플랫폼입니다.는 경우가 있을 만들 수 있는 방법 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 (4.4, Luna, Windows 7 x64) 내에서 Ant 빌드를 실행합니다.설치된 jre lib 또는 ant 스크립트를 수정하는 대신 (빌드에 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
.

내 환경은 Linux Mint 17 및 Java 8 Oracle입니다. 같은 문제가있는 사람들을위한 대답으로 거기에 넣을 것입니다.

Artifact 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>
.

관리자 권한이없는 사용자 사용자를위한 힌트 힌트가 있습니다.이 행을 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"]
    }
}
.

WSDL이 cxf-codegen-plugin "> CxF-Codegen-plugin 가 나면 플러그인을 포크로 구성하고 추가"-djavax.xml.accessternalschema= all "JVM을 추가로 제공 할 수 있습니다.옵션.

        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <fork>always</fork>
                        <additionalJvmArgs>
                            -Djavax.xml.accessExternalSchema=all
                        </additionalJvmArgs>
.

GlassFish 4.0 웹 서버에서 WebService 프로그램을 테스트하는 동안 Eclipse에서 유사한 오류를 얻고있었습니다. java.lang.AssertionError: org.xml.sax.SAXParseException; systemId: bundle://158.0:1/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; lineNumber: 52; columnNumber: 88; schema_reference: Failed to read schema document 'xjc.xsd', because 'bundle' access is not allowed due to restriction set by the accessExternalSchema property.

javax.xml.accessExternalSchema = Alljaxp.properties를 추가했지만, 저에게 작동하지 않습니다.

그러나 저는 여기에있는 해결책을 찾았습니다. GlassFish Server의 경우 GlassFish의 domain.xml를 수정해야합니다. 경로 : <path>/glassfish/domains/domain1 또는 domain2/config/domain.xml) 및 Add, <jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options> 태그

....
.

<java-config>. ... GlassFish 서버를 다시 시작하십시오

Intellij IDE를 사용하여 Maven을 사용하는 경우 Maven 빌드 도구 러너 구성

외부 스키마에 대한 액세스 활성화

IDE 및 GlassFish 서버가 외부 스키마에 액세스하여 웹 서비스의 WSDL 파일을 구문 분석해야합니다. 액세스를 사용하려면 IDE 및 GlassFish 서버의 구성 파일을 수정해야합니다. 자세한 내용은 FAQ 외부 스키마로 WSDL의 구문 분석을 활성화하는 방법을 참조하십시오. IDE

구성

웹 서비스 또는 WSDL 파일의 IDE에서 웹 서비스 클라이언트를 생성하려면 IDE 구성 파일 (NetBeans.conf)을 수정하여 NetBeans_Default_Options에 다음 스위치를 추가해야합니다.

-J-Djavax.xml.accessExternalSchema=all
.

NetBeans.conf 구성 파일 찾기 및 수정에 대한 자세한 내용은 NetBeans Conf FAQ를 참조하십시오. GlassFish Server 구성

GlassFish Server에 배포하는 경우 GlassFish Server (domain.xml)의 구성 파일을 수정하여 서버가 외부 스키마에 액세스하여 WSDL 파일을 구문 분석하고 테스트 클라이언트를 생성 할 수 있습니다. 외부 스키마에 액세스 할 수 있으려면 GlassFish 구성 파일 (GlassFish_install / GlassFish / Domains / Domain1 / config / domain.xml)을 열고 다음 JVM 옵션 요소 (굵게 표시)를 추가하십시오. 변경 사항이 적용되도록 서버를 다시 시작해야합니다.

</java-config>
  ...
  <jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options>
</java-config>
.

Ant 태스크 wsimport를 사용하는 사용자는 @cmfly가 제안한 옵션을 전달하고 문서 는 다음과 같습니다.

<wsimport
   <!-- ... -->
   fork="true"
  >
  <jvmarg value="-Djavax.xml.accessExternalSchema=all"/>
</wsimport>
.

나는 정규 maven 프로젝트로 그것을 사용하고, xjc plugin를 실행하기 위해이 플러그인 종속성 구성으로 해결되었다.

     <plugin>
        <!-- Needed to run the plugin xjc en Java 8 or superior -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-2</version>
        <executions>
            <execution>
                <id>set-additional-system-properties</id>
                <goals>
                    <goal>set-system-properties</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <properties>
                <property>
                    <name>javax.xml.accessExternalSchema</name>
                    <value>all</value>
                </property>
                <property>
                    <name>javax.xml.accessExternalDTD</name>
                    <value>all</value>
                </property>
            </properties>
        </configuration>
    </plugin>
.

JDK1.8.0_65

에서 작동합니다.
wsimport -J-Djavax.xml.accessExternalSchema=all -keep -verbose https://your webservice url?wsdl
.

이제 2.5 버전 (7 월 17 일 릴리스)으로 수정되었습니다. https://github.com/mojojohaus/jaxws-maven-plugin/issues/8 .

2.4.x 버전의 경우 해결 방법 (href="https://github.com/mojohaus/jaxws-maven-plugin/issues/4" rel="nofollow noreferrer"> https://github.com/mojohaus/jaxws-maven-plugin/issues/4 ) :

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>2.4.1</version>
        <dependencies>
            <dependency>
                <groupId>com.sun.xml.ws</groupId>
                <artifactId>jaxws-tools</artifactId>
                <version>2.2.10</version>
            </dependency>
        </dependencies>
    </plugin>
.

주소를위한 또 다른 해결책 : wiki.netbeans.org 웹 서비스 클라이언트를 웹 서비스 또는 WSDL 파일에서 생성 할 때 IDE의 웹 서비스 클라이언트 마법사가 WSDL 파일을 구문 분석합니다.IDE 구성 파일 (NetBeans.conf)을 수정하여 다음 스위치를 NetBeans_Default_Options에 추가해야합니다.변경 사항을 적용하려면 IDE를 다시 시작해야합니다.

-J-Djavax.xml.accessExternalSchema=all
.

GlassFish에 배포 할 때 외부 스키마에 대한 액세스를 사용하여 웹 서비스에 대한 테스트 클라이언트를 생성해야합니다.액세스를 사용하려면 GlassFish Server (GlassFish_install / GlassFish / Domains / Domain1 / Config / Domain.xml)의 구성 파일을 수정하고 다음 JVM 옵션 요소를 추가해야합니다.변경 사항이 적용되도록 서버를 다시 시작해야합니다.

</java-config>
  ...
  <jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options>
</java-config>
.

개미를 사용하는 경우 JVMARG를 Java 호출에 추가 할 수 있습니다.

<jvmarg value="-Djavax.xml.accessExternalSchema=all" />
.

매우 간단한 휴대용 솔루션은 코드의 중요한 부분에 다음 코드 라인을 설치하는 것입니다. 그 중 일부는 실행될 확률 (예 : 주 메서드에서 바로 메인 메서드에서 오른쪽 메서드) :

System.setProperty("javax.xml.accessExternalDTD", "all");
.

이것은 까다로운 Maven pom.xml 변경 (어떤 이유로 나를 위해 작동하지 않았기 때문에) 프로그래밍 방식으로 프로그래밍 방식으로 필요한 시스템 속성을 설정합니다.

나는 단지도는 당신이 사용하는 경우 SoapUI (5.4.x) 고 사용 Apache CXF 을 생성하는 도구는 자바 코드를 넣어 javax.xml.accessExternalSchema = allYOUR_JDK/jre/lib/jaxp.properties 파일을 찾을 수 있습니다.

다른 대안은 다음을 추가하여 wsimport.sh 쉘 스크립트를 업데이트하는 것입니다.

wsimport.sh는이 디렉토리에 있습니다.

JAXWS-RI.2.2.28 / bin

exec "$ Java"$ wsimport_opts -djavax.xml.accessexternalschema= all -jar "$ jaxws_home / lib / jaxws-tools.jar" "$ @"

다른 참고:를 사용하는 경우 maven-jaxb2-plugin, 이전 버전 0.9.0 사용할 수 있습니다,해결 방법을 설명 이 문제에 대, 에는 이 행동이 영향을 받는 플러그인입니다.

NetBeans JDK8 및이 문제에 대한 자습서를 업데이트합니다.

JAX-WS 웹 서비스 시작 -> 외부에 대한 액세스 활성화스키마

"JDK 버전 / jre / lib"경로에서 jaxp.properties (존재하지 않는 경우)라는 파일을 작성한 다음이 행을 추가하십시오.

javax.xml.accessExternalSchema = all
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top