클라이언트 컴퓨터에서 실행되는 Eclipse RCP 응용 프로그램이 있습니다. 제 3 자 jar (Database connector Jars와 같은)를 클래스 경로로 가져온 다음 클래스 경로의 jar로 다시 시작할 수있게하려면 RCP 응용 프로그램이 필요합니다.실행중인 RCP 응용 프로그램의 클래스 경로에 외부 jar를 가져 오는 방법
나는 어디에서나 보려고 노력했지만 그것에 대한 지침서를 찾을 수는 없습니다. 다음 코드를 사용하여 jar를로드하려고 시도했습니다.
urls = new URL[] { new URL("jar", "",
"file:" + "C:\\Users\\Jars\\mysql-connector-java-5.1.38.jar" + "!/") };
URLClassLoader cl = URLClassLoader.newInstance(urls, this.getClass().getClassLoader());
Class<?> loadedClass = cl.loadClass("com.mysql.jdbc.Driver");
그러나이 클래스는 단일 클래스를로드합니다. 항아리에있는 모든 클래스를로드하려고해도 항아리가 진정으로 RCP 응용 프로그램의 클래스 경로에 있지 않으므로 내부 종속성을 확인할 수 없습니다.
Bundle-ClassPath: Jars/mysql-connector-java-5.1.38.jar
하지만 난 도구로 항아리를 포장 할 수 없습니다
을 수행하는 일반적인 방법은 MANIFEST.MF 파일에있는 항아리의 경로를 추가하고 용기와 도구를 포장하는 것입니다.
대부분의 기사는 항아리를 플러그인으로 패키지하고 종속성을 제공한다고 말합니다. 그러나 클라이언트가 단지 jar에 대한 경로를 제공하는 클라이언트 시스템에서이 작업을 수행 할 수 있습니까?
나는 OSGI 프레임 워크 OSGI Tutorial by Vogel에 대해서도 읽었습니다. 그러나 나는 이해하기가 어려워서 내 요구 사항을 충족시키지 못한다고 생각합니다.
SQLDeveloper와 같은 몇 가지 RCP 응용 프로그램은 클래스 경로에 다양한 JDBC jar를 가져온 다음 클래스 경로의 JAR로 다시 시작할 수 있습니다. 그래서 나는 그것이 가능하다고 생각한다.
아무도 도와 드릴 수 있습니까? 또는 링크를 다시 redirrect합니까? 미리 감사드립니다
에이 완벽하게 작동합니다. 그러나 서로 상호 의존적 인 여러 항아리가 있다면 어떨까요? 이 병을 올바른 순서로 가져올 수 있습니까? –
예. 작동합니다. 여러 개의 항아리로 테스트했습니다. –