Eclipse RCP: добавете външни директории към classpath

Имам приложение за Eclipse RCP, където трябва да добавя някои външни jar файлове. Проблемът е, че не мога да добавя бурканите просто към плъгин и да добавя този плъгин към моето RCP приложение.

Поради няколко причини трябва да добавя пътища само към директории, където се намират jar файловете. Тези jar файлове трябва да бъдат добавени към класовата пътека на програмата при стартиране. А пътищата до директориите са променлива (например те се поставят във файл).

Има ли възможност за добавяне на външни пътища по някакъв начин към classpath?


person fyaa    schedule 17.07.2013    source източник
comment
Мога ли да добавя нещо към получения eclipise.ini s.th. Мога ли да разширя класния път?   -  person fyaa    schedule 19.07.2013
comment
Ммм??? Персонализирано зареждане на клас може би? И тогава можете да споделяте API интерфейси за достъп до тези класове или да използвате отражение. Освен това, ако тези директории съдържат пакети, можете да ги инсталирате чрез Equinox framework.   -  person Ezhik    schedule 21.07.2013
comment
Ако изберете OSGi начин, погледнете BundleContext.installBundle(location, stream)   -  person Ezhik    schedule 21.07.2013


Отговори (1)


добавете външна директория към classpath, има три метода:

>  **1. System.setProperty("java.class.path",
> System.getProperty("java.class.path")+";"+"directory");**
  1. Файл файл = нов файл ("/home/../my.jar"); URLClassLoader classloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Метод add = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class }); add.setAccessible(true); add.invoke(classloader, нов обект[] { file.toURI().toURL() });

  2. конфигурирайте променливата classpath в .bashrc

person CHmoonKa    schedule 18.07.2013
comment
Първото нещо очевидно не работи. И третият вариант е доста странен. Второто нещо работи по някакъв начин, но в моя случай получавам NoSuchMethodError при извикване на методите на динамично добавените буркани. - person fyaa; 18.07.2013
comment
прав си, системата прочете свойството при стартиране, така че модифицирането му по време на изпълнение не работи. - person CHmoonKa; 19.07.2013