런타임에 JAR 파일에서 인터페이스를 구현하는 클래스를로드하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/9433003

문제

사용자 구현 클래스를 사용할 수있는 응용 프로그램을 구현하려고합니다.각 클래스는 인터페이스를 정의하는 인터페이스를 구현해야하며 사용자가 구현 한 모든 클래스가 JAR 파일에 보관되어 있습니다.사용자는 jar 파일을 클래스 경로에 복사 한 다음 JAR 파일 이름 만 내 응용 프로그램에만 제공합니다.내 응용 프로그램은 JAR 파일을 동적으로로드 할 수 있어야합니다.이렇게하려면 이 게시물 가 매우 유용합니다.그러나 클래스 이름별로 클래스를로드합니다.나는 그들의 부모를 바탕으로 수업을로드하고 싶습니다.

public class A implements iA {
    @Override
    int getAValue() { ... }
}

public class B implements iB {
     @Override
     int getBValue() { ... }
}
.

로드 된 JAR 파일은 AB 클래스가 모두 있습니다.B 인터페이스 이름을 알면 Class iB 클래스에서 인스턴스를 가져 오려고합니다.

어떻게해야합니까?

도움이 되었습니까?

해결책

이 게시물을 확인하십시오 : 인터페이스 구현 Java 클래스 찾기

원하는대로 해결책에 대해 이야기합니다.

제가 제안 할 것이 가장 가벼운 방법이 아닙니다.하지만 Java의 플러그인 아키텍처와 OSGi의 성공 사례에 대한 기본 사용 사례 중 하나를 설명했습니다.

Apache Felix와 같은 표시등을 사용하여 사용자가 간단한 OSGi.Bundleactivator를 구현하고 OSGi 서비스로 인터페이스 구현을 등록 할 수있는 JAR을 만듭니다. (이것은 단지 멋진 해시지도이며 휴식 서비스 등과는 아무 것도 없습니다).

그런 다음 주어진 인터페이스의 모든 구현을 얻을 수 있습니다. 그 꽤 똑바로 앞으로. http : / /felix.apache.org/site/apache-felix-framework-launching-and-embedding.html

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