때때로 고객에게 제공되는 기능을 포함하는 라이브러리 이클립스 프로젝트/작업 공간이 있습니다. 우리는 모두 연구자이기 때문에 매우 비공식적으로 이루어집니다. 문서와 함께 JAR과 Word 파일을 만들어 그들에게 보냅니다.나는 일을 단순화하기 위해 실제로 필요한 것만 포함하는 JAR 파일을 보내는 것을 선호합니다. X, Y, Z 및 W 클래스가 필요한 경우 X, Y, Z 및 W와 해당 클래스가 의존하는 모든 클래스가 포함된 JAR 파일을 보냅니다.지금 저는 절망적인 수동 방식으로 이 작업을 수행하고 있습니다(새로운 프로젝트를 만들고 X, Y, Z 및 W 위로 드래그하여 컴파일러 오류를 수정하는 데 필요한 모든 것을 드래그합니다). 이클립스에서 자동화하는 올바른 방법은 무엇입니까?편집: 밝히기 위해 관련된 이클립스 프로젝트에는 고객이 실제로 필요로 하는 것보다 더 많은 클래스가 포함되어 있습니다.편집 : 또한 반사는 포함되지 않습니다. 컴파일러는 무슨 일이 일어나고 있는지 알고 있다고 확신할 수 있습니다. 저는 코드를 작성한 사람으로 전염병처럼 반사를 피합니다. 리플렉션을 사용한 유일한 장소는 Collections.to Array()를 모방하는 것이며, 이 경우 문제를 일으킬 수 있는 유일한 클래스는 사용자가 제공한 클래스입니다.Ant를 사용하여 이런 것들을 자동화할 수 있습니다.
내보내기 명령을 사용하면 생성된 JAR에 포함할 파일을 선택할 수 있습니다.
현재 컴파일러가 만족하기에 충분한 클래스 파일을 복사하고 있습니다. 하지만 실행 중인 애플리케이션을 만족시키기 위해 충분한 클래스 파일을 복사하고 있다고 확신하십니까? 일부 애플리케이션은 런타임에 리플렉션을 통해 클래스를 로드합니다.이 예에서 컴파일러는 org.my.company.Foo 클래스를 복사하지 않아도 불평하지 않습니다. 그러나 실행 중인 애플리케이션은 클래스를 찾을 수 없을 때 가장 분명하게 불평할 것입니다.두 상황을 모두 수용하려면 실행 중인 응용 프로그램에서 로드되는 모든 클래스를 기록하는 사용자 지정 ClassLoader를 생성할 수 있습니다.그 후, 다음과 같이 애플리케이션을 실행할 수 있습니다.자바-Djava.시스템.class.loader= RecordingClassLoader-Dloaded.classes.file=loaded_classes.txt너의 애플리케이션 loaded_classes.txt 파일은 다음과 같습니다.java.lang.시스템 java.nio.charset.Charsetjava.lang.String……당신의 어플리케이션 java. 애플리케이션을 실행하면 작은 프로그램이 이 파일에 기재된 클래스를 자동으로 복사할 수 있습니다.
이러한 리팩터링을 지원하기 위해 이클립스 개선 요청을 제출했습니다. 그동안 저는 분리와 의존성 분석에 도움이 되는 몇 가지 유망한 도구를 발견했습니다. eDepend는 다음을 포함한 의존성 뷰어 플러그인입니다.요소 의존성을 표시하는 클래스/패키지 의존성 그림, 라이브러리/다른 프로젝트 및 의존성 사이클과의 관계. 그러한 종속성을 야기한 클래스 찾기를 나열할 수도 있습니다.Java 용 STAN 구조 분석 엔와이어 클래스 의존성 분석 기종 속성 찾기 관련 질문: 1