문제

플러그인으로 확장 할 수있는 자바 프로그램을 만들고 싶습니다.어떻게해야하며 어디를 찾아야합니까?

플러그인이 구현해야하는 인터페이스 세트가 있으며 항아리에 있어야합니다.프로그램은 (프로그램에 대한) 상대 폴더에서 새로운 jar를 감시하고 어떻게 든 등록해야합니다. <시간>

내가 이클립스 RCP를 좋아하지만 내 단순한 요구에는 너무 많은 것 같다.

스프링에도 똑같은 일이 있지만 어차피 보려고했기 때문에 한 번 해보는 것이 좋을 것 같습니다.

하지만 그래도 가능한 한 간단하게 자체 플러그인 "프레임 워크"를 만드는 방법을 찾고 싶습니다.

도움이 되었습니까?

해결책

과거에 작성한 소프트웨어에 대해이 작업을 수행했는데 매우 편리합니다.먼저 모든 '플러그인'클래스를 구현하는 데 필요한 인터페이스를 생성했습니다.그런 다음 Java ClassLoader 를 사용하여클래스를 만들고 인스턴스를 만듭니다.

할 수있는 한 가지 방법은 다음과 같습니다. 라코 디스

클래스가로드되었으므로 이제 인터페이스 이름이 MyModule이라고 가정하고 인스턴스를 만들어야합니다. 라코 디스

다른 팁

OSGi 를 살펴보세요.

한편으로 OSGi는 모듈 식 소프트웨어 구성 요소를 사용하여 많은 다른 작업을 관리, 시작 및 수행하기위한 모든 종류의 인프라를 제공합니다.다른 한편으로는 귀하의 필요에 비해 너무 무거울 수 있습니다.

부수적으로 Eclipse는 OSGi를 사용하여 플러그인을 관리합니다.

자바 서비스 제공 업체 (SPI) API .특정 서비스를 구현하는 것으로 자신을 노출하는 클래스 경로의 모든 Jar에서 모든 클래스를 찾기위한 간단한 시스템을 제공합니다.나는 과거에 큰 성공을 거둔 플러그인 시스템과 함께 사용했습니다.

두 번째로 받아 들여지는 솔루션이지만 기본 플러그인 지원이 필요한 경우 (대부분의 경우) Java Plugin Framework (JPF)는 적절한 문서가 없지만 매우 깔끔한 플러그인 프레임 워크 구현입니다.

쉽게 배포 할 수 있으며 클래스 로딩 특이점을 통과하면 개발하기가 매우 쉽습니다.위의 주석은 플러그인 디렉토리 아래의 플러그인로드 경로는 path라는 일반 패키지 경로에 클래스 파일을 배포하는 것 외에도 전체 클래스 경로를 따라 이름을 지정해야한다는 것입니다.예 : 라코 디스

자체 개발 클래스 로더 접근 방식 : 클래스 로더에 대해 배울 수있는 확실히 좋은 방법이긴하지만 "클래스 로더 지옥"이라는 것이 있는데, 더 큰 프로젝트에서 사용할 때이를 사용하는 사람들이 많이 알고 있습니다.충돌하는 클래스는 소개하기 쉽고 해결하기 어렵습니다.

일식이 몇 년 전에 OSGi로 전환 한 이유가 있습니다. 따라서 애완 동물 프로젝트 이상이라면 OSGi를 진지하게 살펴보십시오.볼 가치가 있습니다. 클래스 로더와 새로운 기술 표준에 대해 배웁니다.

Eclipse의 Rich Client Platform을 기반으로 빌드 한 다음 Eclipse 확장 프레임 워크를 공개하는 것을 고려해 보셨습니까?

또한 필요에 따라 Spring Framework가 이러한 작업과 수행 할 수있는 다른 작업에 도움이 될 수 있습니다. http://www.springframework.org/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top