2013-07-17 3 views
0

Eclipse RCP 애플리케이션이 있는데 여기에 외부 jar 파일을 추가해야합니다. 문제는 단지 플러그인에 jar를 추가 할 수없고이 플러그인을 내 RCP 어플리케이션에 추가 할 수 없다는 것입니다.Eclipse RCP : 클래스 경로에 외부 디렉토리를 추가하십시오.

몇 가지 이유 때문에 jar 파일이있는 디렉토리에만 경로를 추가해야합니다. 이러한 jar 파일은 시작할 때 프로그램의 클래스 경로에 추가해야합니다. 디렉토리에 대한 경로는 변수입니다 (예 : 파일에 배치됨).

외부 경로를 어떻게 든 클래스 패스에 추가 할 수 있습니까?

+0

에서

  • configurate 클래스 경로 변수는 어쩌면 결과 eclipise.ini s.th.에 무언가를 추가 할 수 클래스 패스를 확장 할 수 있습니까? – fyaa

  • +0

    음? 사용자 정의 클래스 로더가 어쩌면? 그런 다음 API 인터페이스를 공유하여 해당 클래스에 액세스하거나 리플렉션을 사용할 수 있습니다. 또한 해당 디렉토리에 번들이 포함되어 있으면 Equinox 프레임 워크를 통해 설치할 수 있습니다. – Ezhik

    +0

    OSGi 방식을 선택한 경우'BundleContext.installBundle (location, stream) '을보십시오. – Ezhik

    답변

    0

    는 세 가지 방법이 있습니다 클래스 경로에 외부 디렉토리를 추가 :

    > **1. System.setProperty("java.class.path", 
    > System.getProperty("java.class.path")+";"+"directory");** 
    
    1. 파일 파일 = 새로운 파일 ("/ 홈 /../ my.jar"); URLClassLoader classloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); 메소드 add = URLClassLoader.class.getDeclaredMethod ("addURL", 새 클래스 [] {URL.class}); add.setAccessible (true); add.invoke (classloader, new Object [] {file.toURI(). toURL()}); .bashrc에

    +0

    첫 번째 것은 분명히 작동하지 않습니다. 그리고 세 번째 옵션은 다소 이상합니다. 두 번째 것은 작동하지만 제 경우에는 동적으로 추가 된 jars의 메소드를 호출 할 때 NoSuchMethodError가 발생합니다. – fyaa

    +0

    맞습니다. 시스템이 시작할 때 속성을 읽으므로 런타임에 수정하면 작동하지 않습니다. – CHmoonKa

    관련 문제