Java 클래스 종속성 분석기 도구(JDeps) 실행

Java 8부터 JDK는 jdeps(Java 클래스 종속성 분석기)라는 명령행 유틸리티를 제공합니다. jdeps 명령은 클래스 종속성을 분석하고 내부 JDK 패키지를 플래그 지정하는 추가 매개변수를 제공합니다. WebSphere 마이그레이션 도구가 애플리케이션에서 발견한 마이그레이션 문제점 대부분을 플래그 지정하는 반면, jdeps 도구는 새 Java 버전으로 마이그레이션한 후 더 이상 사용할 수 없는 내부 JDK 패키지를 추가로 발견할 수 있습니다.

2진 또는 소스 WebSphere 마이그레이션 도구에서 플래그 지정된 문제점을 해결한 후 최종 단계로서 jdeps 명령을 실행하는 것이 좋습니다. 애플리케이션 Java 아티팩트에 대해 jdeps 명령을 실행하십시오. 정확한 결과를 위해서는 계획된 대상 JDK 설치(예: JDK 11)에서 사용 가능한 jdeps 명령을 -jdkinternals 매개변수와 함께 사용하십시오. 예를 들어 Java 11을 사용하도록 사용자 환경을 설정한 후 다음 명령을 실행하십시오.

jdeps -jdkinternals C:\demo\Apps\myapplication.jar

Java 9부터 시작하여 대부분의 JDK 내부에 대한 액세스를 제한하기 위한 노력이 시작되었습니다. 그러나 마이그레이션을 지원하기 위해 Java 8에 존재했던 API에 대해 기본적으로 이 강력한 캡슐화가 해제되었습니다. Java 16부터 -- illegal-access 실행 프로그램 옵션의 기본값은 permit이 아닌 deny로 설정됩니다. 권장되지는 않지만 --illegal access=permit을 지정하여 Java 16에서 이 제한사항을 무시할 수 있습니다. --illegal-accesswarn 또는 debug로 설정하여 permit과 동일한 효과를 갖지만 debug를 사용하는 동안은 불법적인 제한적 액세스 조작의 경우 스택 추적을 발행하고 warn을 사용하는 동안은 경고 메시지를 발행할 수 있습니다.

Java 17 이상으로 마이그레이션하는 경우 -- illegal-access 실행 프로그램 옵션은 사용되지 않습니다. 대부분의 JDK 내부는 현재 강력하게 캡슐화되었습니다. 권장하지는 않지만, 이 제한사항은 -- add-open 실행 프로그램 옵션 또는 Ass-Opeens JAR Manifest 속성을 사용하여 애플리케이션 또는 써드파티 라이브러리에 필요한 특정 패키지를 열어서 생략할 수 있습니다.

이 변경으로 캡슐화되지 않은 특정한 중요 내부 API는 다음과 같습니다.

유틸리티는 JDK 내부 클래스에 대한 참조를 식별하는 결과를 생성하고 가능한 경우 제안된 대체 API를 제공합니다. 참고: jdeps 명령은 .class 파일, 디렉토리 또는 JAR 파일만 허용합니다.

jdeps 명령에 대한 자세한 정보는 jdeps 참조 페이지를 참조하십시오.