>Java >java지도 시간 >Java 9의 InaccessibleObjectException을 수정하는 방법: JDK 및 애플리케이션 코드 솔루션?

Java 9의 InaccessibleObjectException을 수정하는 방법: JDK 및 애플리케이션 코드 솔루션?

Barbara Streisand
Barbara Streisand원래의
2024-12-24 11:30:12385검색

How to Fix Java 9's InaccessibleObjectException:  JDK and Application Code Solutions?

Java 9에서 InaccessibleObjectException을 해결하는 방법

Java 9를 사용할 때 개발자는 InaccessibleObjectException을 경험할 수 있습니다. 이는 Java 플랫폼 모듈 시스템의 강력한 캡슐화 구현으로 인해 발생합니다.

예외 메시지 분석:

Unable to make {member} accessible: module {A} does not "opens {package}" to {B}

예외를 발생시키는 주요 시나리오:

1. JDK에 대한 반사 호출

  • {A}는 JDK 모듈(예: java.base)입니다
  • {member} 및 {package}는 JDK API에 속합니다
  • {B}는 라이브러리/프레임워크/애플리케이션 모듈입니다(종종 이름이 지정되지 않은 모듈임) @...)

2. Reflection Over Application Code

  • {A}는 애플리케이션 모듈입니다
  • {member}와 {package}는 애플리케이션 코드에 속합니다
  • {B} 프레임워크 모듈이거나 이름이 지정되지 않은 모듈입니다 @...

1. JDK에 대한 반사 호출 솔루션:

반사를 위해 지정된 패키지를 열려면 다음 명령줄 플래그를 사용하십시오.

java --add-opens java.base/java.lang=ALL-UNNAMED

ALL-UNNAMED를 명명된 패키지의 이름으로 바꾸십시오. 해당되는 경우 모듈.

2. 애플리케이션 코드에 대한 리플렉션 솔루션:

모듈 설명자 내에서 다음 옵션 중 하나를 사용하여 내부 패키지를 열도록 모듈 {A}를 편집합니다.

  • {패키지} 내보내기 (공개적으로 액세스 가능하게 함)
  • {패키지}를 {B}로 내보냅니다(다음 사용자만 액세스 가능하게 함) B)
  • {패키지} 열기(런타임에 모든 코드에 액세스 가능)
  • {패키지}를 {B}에 열기(런타임에 B에만 액세스 가능)
  • 모듈 {A} { ... } 열기(런타임 시 모든 코드에서 전체 모듈에 액세스할 수 있도록 함)

위 내용은 Java 9의 InaccessibleObjectException을 수정하는 방법: JDK 및 애플리케이션 코드 솔루션?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.