Java 9에서 InaccessibleObjectException 처리: 멤버를 액세스 가능하게 만들 수 없음
Java 플랫폼 모듈 시스템의 엄격한 캡슐화로 인해 Java 9에서 InaccessibleObjectException이 발생합니다. , 공개 가시성 및 패키지와 같은 특정 조건에서만 액세스 권한을 부여합니다. 수출 가능성.
원인 및 시나리오
이 예외는 일반적으로 다음과 같은 경우에 발생합니다.
해결 사례 1: JDK에 대한 반사 호출
As JDK 모듈은 변경할 수 없으며 솔루션은 리플렉션을 위해 패키지를 여는 명령줄 플래그에 있습니다. 예를 들어, 예외를 해결하려면:
java --add-opens java.base/java.lang=ALL-UNNAMED
사례 2 해결: 애플리케이션 코드에 대한 반사
반영 코드가 편집 가능한 모듈에 있는 경우 해당 모듈을 향상시키는 것을 고려하세요. 모듈 설명자:
기타 해결 방법
Java 9에서만 다음을 사용하여 캡슐화 보호를 비활성화할 수 있습니다.
java --permit-illegal-access
참고: 보안 문제로 인해 이 플래그는 자제해서 사용해야 합니다. 모듈 구성 및 모범 사례에 대한 자세한 내용은 링크된 리소스를 참조하세요.
위 내용은 Java 9의 InaccessibleObjectException: 리플렉션 및 모듈 시스템 충돌을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!