[java] 필수 라이브러리 rt.jar에 대한 제한으로 인해 클래스에 대한 액세스 제한?

스텁을 다시 작성 하지 않고 Java5 에서 IBM의 WSDL2Java 에 의해 작성된 Java 1.4 코드 를 컴파일하려고 시도 중이며 Eclipse 에서이 오류가 발생했습니다 .
나는 런타임 이 사용 가능한 한 생성 된 스텁을 컴파일해야한다고 가정합니다 .
jars

Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar

전체 클래스 이름은 javax.xml.namespace.QName

여기서 정확히 무슨 일이 일어나고 있습니까? 내가 소시지에서 돼지를 리팩토링하려고하는 경우입니까? 스텁을 다시 작성하는 것이 더 낫습니까?



답변

작동하는 또 다른 솔루션이 있습니다.

  1. 프로젝트 속성에서 빌드 경로 설정으로 이동 하십시오 .
  2. JRE 시스템 라이브러리 제거
  3. 다시 추가하십시오. 선택 “라이브러리 추가” 와 선택 JRE 시스템 라이브러리를 . 기본값은 저에게 효과적이었습니다.

다른 jar 파일에 여러 클래스가 있기 때문에 작동합니다. JRE lib를 제거했다가 다시 추가하면 올바른 클래스가 먼저 작성됩니다. 기본 솔루션을 원하면 동일한 클래스의 jar 파일을 제외하십시오.

: 나를 위해 내가 가진 javax.xml.soap.SOAPPart세 가지 다른 항아리에 : axis-saaj-1.4.jar, saaj-api-1.3.jar그리고rt.jar


답변

http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html이 가장 효과적이었습니다.

Windows : Windows-> 환경 설정-> Java-> 컴파일러-> 오류 / 경고-> 더 이상 사용되지 않고 제한된 API-> 금지 된 참조 (액세스 규칙) :-> 경고로 변경

Mac OS X / Linux : Eclipse-> 환경 설정-> Java-> 컴파일러-> 오류 / 경고-> 더 이상 사용되지 않고 제한된 API-> 금지 된 참조 (액세스 규칙) :-> 경고로 변경


답변

나는 같은 문제를 만났다. 웹 사이트 http://www.17ext.com 에서 답을 찾았습니다 .
먼저 JRE 시스템 라이브러리를 삭제하십시오. 그런 다음 JRE 시스템 라이브러리를 다시 가져 오십시오.

왜 그런지 모르겠습니다. 그러나 문제가 해결되면 도움이되기를 바랍니다.


답변

내 생각에 Java 5와 함께 제공되는 표준 클래스를 라이브러리의 클래스로 바꾸려고합니다.

라이센스 계약의 조건에 따라 허용되지 않지만 AFAIK는 Java 5까지 시행되지 않았습니다.

나는 이것을 QName으로 전에 보았고 내가 가지고있는 항아리에서 클래스를 제거하여 그것을 고쳤습니다.

“-Xbootclasspath :”옵션에 대한 http://www.manpagez.com/man/1/java/ 참고 사항 편집

“rt.jar의 클래스를 재정의하기 위해이 옵션을 사용하는 응용 프로그램은 Java 2 Runtime Environment 이진 코드 라이센스에 위배되므로 배포해서는 안됩니다.”

http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE

“자바 기술 제한 사항. JPI 내에 추가 클래스를 작성하거나” 추가 클래스 및 관련 API를 작성하는 경우 (i) Java 플랫폼의 기능을 확장하고 (ii) 타사 소프트웨어 개발자에게 노출되는 이러한 추가 API를 호출하는 추가 소프트웨어를 개발할 목적으로 모든 개발자가 무료로 사용할 수 있도록 해당 API에 대한 정확한 사양을 신속하게 게시해야하며, 라이센스 사용자가 추가 클래스, 인터페이스,”java”, “javax”, “sun”또는 Sun의 명명 규칙 지정에서 지정한 것과 유사한 규칙으로 식별되는 하위 패키지


답변

이 오류도 발생했지만 Maven과 tycho 컴파일러 (OSGi 플러그인 세트)를 사용하여 명령 줄에서 프로젝트를 빌드했습니다 . 동일한 문제를 겪고 있지만 명령 줄이 아닌 Eclipse에서 문제를 해결하는 사람들을 통해 대량의 선별 작업을 한 후 Tycho 개발자 포럼pom.xml 에서 액세스 제한에 대한 컴파일러 경고를 무시 하도록 구성을 사용하여 내 질문에 대답 한 메시지를 발견 했습니다 .

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-compiler-plugin</artifactId>
    <version>${tycho.version}</version>
    <configuration>
        <compilerArgument>-warn:+discouraged,forbidden</compilerArgument>
    </configuration>
</plugin>

자세한 내용은 Tycho FAQ를 참조하십시오 . AGES를 해결하는 데 도움이되었으므로이 답변을 게시하여 명령 줄에서 이러한 액세스 제한 오류를 해결하려는 다른 사람을 도울 것이라고 생각했습니다.


답변

  • 프로젝트 속성에서 빌드 경로 설정으로 이동하십시오.
    Windows -> Preferences -> Java Compiler
  • JRE 시스템 라이브러리 제거
  • “완벽한 일치”를 가진 다른 JRE 추가
  • 청소하고 프로젝트를 다시 빌드하십시오. 그것은 나를 위해 일했다.

답변

방금이 문제가있었습니다. 분명히 빌드 경로에서 JRE를 1.6 대신 1.5로 설정했습니다.