this.getClass (). getResource ("xyz.class") не возвращает путь DIR в среде OSGi - PullRequest
2 голосов
/ 02 ноября 2011

Мое приложение зависит от некоторых файлов SDK. Этот SDK широко использует метод this.getClass().getResource("xyz.class") в своих API.

Теперь я разработал пакеты на основе этих jar-файлов и запустил их в среде OSGi. Но в среде OSGi this.getClass().getResource("xyz.class") строка кода возвращает некоторый путь к пакету в xyz.class, тогда как ожидается, что он должен вернуть абсолютный путь DIR с jar:// (как это происходит в env не OSGi).

Вопрос в том, как получить эту работу. Мне нужен DIR PATH для класса, который может присутствовать в зависимом банке, присутствующем в другом комплекте?

1 Ответ

2 голосов
/ 02 ноября 2011

Вы не можете. OSGi описывает расположение содержимого пакета. Это злоупотребление API загрузчика классов, если предположить, что все URL ресурсов находятся в файловой системе. Тот факт, что это было сделано в прошлом, не оправдывает тот факт, что он нарушает абстракцию.

Тем не менее, реализация платформы Eclipse Equinox действительно обеспечивает конкретный способ реализации. См. org.eclipse.core.runtime.FileLocator.toFileURL (URL) .

...