자바 -illegal - access` 설정 '의 현재 값을 가져옵니다

바질 우르 큐 :

이 문서, JDK 9 : 불법 반사 기본적으로 액세스 할 수 있도록 제안 의 주장 –permit-illegal-access옵션은 일반적인 옵션으로 대체됩니다, –illegal-access.

  • –illegal-access=permit
  • –illegal-access=warn
  • –illegal-access=debug
  • –illegal-access=deny

일이나요 ➥? 있습니까 –illegal-access설정은?

➥ 어떻게 이러한 설정은? JVM이 실행에 인수?

➥ 어떻게 런타임시 현재 값을 얻을 수 있습니까?

양배추 :

그 일이 있었나요? -illegal 액세스 설정이 있습니까?

예, 그런 일이 - 적어도 오픈 JDK / OracleJDK 위해 한 나타납니다. 이 옵션은 설명서에 나와있는 java"도구".

실행시 또한 나열됩니다 java --help-extra.

참고 : JDK-11 사용 설명서는이 옵션은 향후 릴리스에서 제거 될 것입니다 언급하고있다.


어떻게 이러한 설정은? JVM이 실행에 인수?

예, 명령 줄 옵션입니다. 예:

java --illegal-access=deny --module-path <path> --module <module>/<main-class> [args...]

어떻게 런타임시 현재 값을 얻을 수 있습니까?

불행히도, 난 런타임에 값을 조회 할 수있는 방법을 알고 아니에요. 이 시스템 또는 환경 특성의 일부가 표시되지 않습니다. 나는 값이 내부적으로 사용 된 곳 찾는 시도했지만 (하지만 될 솔직히 내가 너무 많은 시간을 찾고 낭비하지 않았다) 할 수 없습니다.


편의를 위해, 여기의 문서의 --illegal-accessJDK-11은 :

--illegal = 액세스 파라미터

런타임에 존재하는, 때 --illegal-access=키워드를 취 parameter작동 모드를 지정합니다 :

노트 :

이 옵션은 향후 릴리스에서 제거 될 것입니다.

  • permit이 모드는 패키지 JDK 8에 존재하는 경우는, 예를 들면 (정적 액세스를 가능하게 (예를 들면, 클래스 경로 코드와 같은) 모든 명명 모듈 코드 런타임 이미지의 각 모듈의 각 패키지를 개방 플랫폼의 다양한 반사 API를 통해 컴파일 된 바이트 코드, 깊은 반사 액세스). 이러한 패키지의 첫 번째 반사 액세스 작업은 경고가 발행됩니다. 그러나, 경고는 첫 번째 항목 이후에 발급되지 않습니다. 이 단일 경고 추가 경고를 설정하는 방법에 대해 설명합니다. 이 모드는 현재 JDK의 기본이지만 향후 릴리스에서 변경됩니다.

  • warn:이 모드는 동일 permit경고 메시지가 각 불법 반사 액세스 작업을 위해 발행되는 것을 제외.

  • debug:이 모드는 동일 warn경고 메시지 및 스택 추적이 모두 각각의 불법 반사 액세스 동작을 발행된다는 점을 제외하고.

  • deny:이 모드 같은 다른 명령 줄 옵션에 의해 활성화 된 것을 제외한 모든 불법 액세스 작업을하지 않습니다 --add-opens. 이 모드는 향후 릴리스의 기본이 될 것입니다.

기본 모드는 --illegal-access=permit, 반 성적 한 번에 적어도 어떤 JDK-내부 API를 액세스하는 클래스 패스에 코드의 사항을 알리기위한 것입니다. 이러한 모든 액세스에 대한 자세한 내용은, 당신은 사용할 수 있습니다 warn또는 debug모드. 불법적 인 접근을 필요로 클래스 경로에있는 각 라이브러리 또는 프레임 워크에 대한 두 가지 옵션이 있습니다 :

  • 구성 요소의 테이너가 이미 고정 된 버전을 출시 한 경우 더 이상 사용은 JDK하지-내부 것으로 API를 다음 해당 버전으로 업그레이드를 고려할 수 있습니다.

  • 구성 요소가 여전히 해결해야하는 경우에, 당신은 그 테이너에 연락하여 적절한 수출 API를 JDK-내부의 API의 사용을 대체하도록 요청할 수 있습니다.

당신이 불법적 인 접근을 필요로하는 구성 요소를 계속 사용해야하는 경우, 당신은 하나 또는 그 이상의 사용하여 경고 메시지를 제거 할 수있는 --add-opens접근이 요구되는 만 내부 패키지를 열 수있는 옵션을.

, 응용 프로그램이 JDK의 향후 버전에 대한 준비가되어 있는지 확인하려면 함께 실행 --illegal-access=deny필요한과 함께 --add-opens옵션을 제공합니다. 남아있는 불법 액세스 오류는 대부분 JDK-내부 API에 컴파일 된 코드 정적 참조에 의한 것입니다. 당신은 실행하여 사람들을 식별 할 수 jdeps의 와 도구 --jdk-internals옵션을 선택합니다. 성능상의 이유로, 현재 JDK 불법 정적 액세스 작업에 대한 경고를 발행하지 않습니다.

추천

출처http://43.154.161.224:23101/article/api/json?id=175374&siteId=1