Я разработал плагин eclipse, который ссылается на внешний jar, присутствующий во внешнем каталоге установки.
Итак, я добавил запись в мой classpath пакета, как показано ниже:
Bundle-ClassPath: external:C:\mylib.jar
Мой класс загружается правильно - и плагин может обнаружить класс MyClass
, присутствующий в этом внешнем lib
.
Однако метод a()
- я вызываю в классе MyClass
не работает.
Метод a () выглядит следующим образом:
public void a()
{
URL url = this.class.getClassLoader().getResource("META-INF/startup-jar ");
...
}
поэтому возвращаемый URL-адрес соответствует каталогу подключаемых модулей eclipse C:\eclipse3.4\test
а не физического местоположения внешнего сосуда, которое является C:\mylib.jar
Это приводит к сбою метода a()
. Теперь мой вопрос -
Поскольку у меня нет внешнего jar-файла, скопированного в каталог моего плагина (он присутствует только в пути к классам плагина)
как я могу гарантировать, что загрузчик классов получит URL-адрес моего внешнего jar, а не моего каталога плагинов?
Примечание: я не могу изменить механизм загрузки классов во внешнем jar-файле, так как это сторонняя зависимость, и я не могу контролировать код. Поэтому, пожалуйста, предложите решение, которое помогло бы мне правильно загрузить внешний класс JAR, чтобы я мог получить правильный URL.
Большое спасибо за помощь - заранее
Чтобы объяснить немного больше о проблеме, с которой я сталкиваюсь:
Мой внешний jar находится внутри установочной директории моего сервера.
Когда класс в моем внешнем jar вызывает URL url = this.class.getClassLoader (). GetResource ("startup-jar")
возвращает URL относительно пути пакета eclipse -
Что-то вроде C: \ eclipse3.4 ...
и этот URL используется для получения загрузочного каталога (каталога установки сервера).
Таким образом, он должен был вернуть путь относительно каталога установки сервера, но вместо этого вернуть путь относительно каталога установки eclipse.
Из-за этого я не могу вызывать какие-либо API-интерфейсы на сервере, поскольку каталог установки сервера, который он пытается использовать, неверен.
Итак, я хотел знать, как лучше всего справиться с этим, чтобы этот вызов метода возвращал каталог установки сервера, а не путь пакета затмений.