getPackages()
을 사용하여 라이브러리의 모든 패키지 이름을 알 수는 없으므로 클래스 로더에 알려진 패키지 이름 만 나열됩니다. 즉, 클래스가 아직 특정 패키지에서로드되지 않은 경우 클래스에없는 것입니다.
jip 파일 처리 루틴을 사용하여 jar 파일을 열고 디렉토리 이름별로 패키지를 읽습니다. 이 기술을 사용하면 "사용 중이 아닌"패키지 이름을 포함하여 모든 패키지 이름을 찾을 수 있습니다. 기본적으로 .class
파일이 들어있는 경로는 "패키지 이름"입니다. 자세한 내용으로 편집
는 ----
당신이 JAR 파일을 사용하지 않는 (그리고 왜? 그들은 정말 좋은 방법입니다!) 때문에, 당신이해야합니다 --- JAR 파일을 사용하지 않는 나타냅니다 디렉토리를 스캔합니다. 디렉토리를 "찾으려면"클래스 경로를 잘라야합니다. 클래스 경로를 얻을 수있는 방법은 다음과 같습니다
String classpath = System.getProperty("java.class.path", null);
그런 다음 당신이 그것을에서
.class
파일이 각 "출발점"아래의 모든 디렉토리의 검색을 수행. 일단 그 모든 것들이 갖추어지면 모든 패키지를 갖게됩니다.
다시 말해, 클래스 로더가 모든 클래스를로드하지 않는다고 보장 할 수 없다면 (예 : 일반적으로 그렇지 않은 경우) 클래스 로더에게 묻는 것만으로는 모든 패키지를 알 수 없습니다. 당신이 빈 패키지를 필요로하지 않는 한
* "나는 어떻게 바람직하게 반사를 사용하여 Java에서이 작업을 수행 할 것 별도의 자바 프로젝트의 모든 패키지 이름을 싶어?"* 최종 사용자는이 모든 헛소리 무엇을 얻을 수 있습니까? 어떤 ** 응용 프로그램 기능 **을 제공하려고합니까? –