내가 겪었던 질문에 대한 답변이 정확합니다. java -cp ..;myTest.jar test2.Needer
을 사용할 때도 java.class.path
속성에 대한 결과로 "..; myTest.jar"만 표시됩니다.
주 다음 MANIFEST.MF
에 지정된 클래스 경로를 검색하는 -cp
매개 변수를 사용하는 경우에도! (구글 에서이 정보를 찾을 수 없습니다 자신을 테스트)
그래서 나는 그것이 -jar
매개 변수와 관련이 있다고 생각하지 않습니다. Link에서는 와일드 카드의
확장 클래스 로딩 과정 자체 동안, 오히려 후반보다 전에 프로그램의 main 메소드의 호출에 조기 완료 찾을 수 있습니다.
흥미롭게도 테스트 중에 발견 : MANFIFEST.MF의 클래스 경로는 반복적으로 검색됩니다. 그러므로 test.jar
파일이 myTest.jar의 MANIFEST.MF에있는 클래스 경로에 있으면, 012.을 사용할 때 test.jar의 MANIFEST.MF에있는 클래스 경로도 조회됩니다.
결과적으로 java.class.path
속성이 MANIFEST.MF의 클래스 경로 표시를 지원하면 이후에 모든 .jar 파일에 따라 클래스 파문도 표시되어야합니다.classpath는 클래스가 발견 될 때까지만 검색되기 때문에 lazy 로딩 메커니즘을 참조하지 않아야합니다.
TL; DR :이이 -jar
매개 변수와는 아무 상관 (-cp
은 물론 우려)이 없다고 생각합니다. 나의 설명에서, MANIFEST.MF로부터 classpath를 보여주기위한 지원은 (실제로 의존성이 없기 때문에 존 재적으로 .jar에서 사용되는 것보다) 부가적이고 무의미한 재귀 탐색 비용을 수반 할 뿐이다. 그리고이 무분별한 검색은 프로그램 시작을 지연시킬 것이므로 (재귀 검색은 실제로 깊을 수 있기 때문에) 구현되지 않습니다.