> Java > java지도 시간 > Java 9의 불법 반사 액세스란 무엇이며 어떻게 해결할 수 있습니까?

Java 9의 불법 반사 액세스란 무엇이며 어떻게 해결할 수 있습니까?

DDD
풀어 주다: 2024-12-05 03:07:13
원래의
222명이 탐색했습니다.

What is Illegal Reflective Access in Java 9 and How Can I Fix It?

Java 9의 불법 반사 액세스

Java 9의 모듈화 도입에 따라 개발자는 불법 반사 액세스와 관련된 문제에 직면했습니다. 이 개념을 완전히 이해하려면 먼저 모듈 시스템의 "Relaxed-strong-encapsulation"을 이해하는 것이 중요합니다.

불법 반사 액세스 정의

불법 반사 액세스는 다음을 의미합니다. 모듈식 설계 원칙에서 의도하지 않은 방식으로 반사 작업이 수행되는 상황. 모듈과 해당 패키지 사이에 설정된 캡슐화 장벽을 위반합니다.

경고를 유발하는 상황

불법 반사 액세스에 대한 경고는 다음과 같은 경우에 발생합니다.

  • 모듈은 적절한 모듈 선언이나 VM 인수(예: --add-opens).
  • 컴파일된 코드는 내부 JDK API에 액세스합니다.

캡슐 원칙 완화

Java 9에서는 - - 마이그레이션을 지원하기 위해 기본 설정이 허가인 불법 액세스 실행 프로그램 옵션입니다. 허용 모드:

  • 패키지에 대한 첫 번째 불법 반사 액세스 작업은 경고를 생성합니다.
  • 이후 작업은 경고를 트리거하지 않습니다.

구성 모드

--illegal-access 옵션은 다른 옵션으로 구성할 수 있습니다. 모드:

  • debug: 각 불법 액세스에 대해 경고 및 스택 추적을 제공합니다.
  • warn: 각 불법 액세스에 대해 경고를 발행합니다.
  • deny: 불법 액세스 작업을 허용하지 않습니다.

식별 방법 및 수정

불법 반사 액세스를 방지하기 위해 개발자는 다음을 수행할 수 있습니다.

  • --illegal-access=deny를 사용하여 애플리케이션을 실행하여 무단 액세스를 탐지합니다.
  • 식별 jdeps 도구를 사용하는 JDK API에 대한 정적 참조(--jdk-internals 사용) 옵션).

경고 메시지

잘못된 반사 액세스 작업으로 인해 다음 형식의 경고가 발생합니다.

WARNING: Illegal reflective access by $PERPETRATOR to $VICTIM
로그인 후 복사

여기서:

  • $PERPETRATOR: 반사를 호출한 유형 운영
  • $VICTIM: 액세스 중인 회원

향후 호환성 보장

향후 호환성을 보장하려면 불법 반사 액세스를 제거하고 모듈이 적절한 캡슐화 원칙을 따르도록 하세요.

위 내용은 Java 9의 불법 반사 액세스란 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿