Я ломаю голову над этим уже довольно давно и не могу найти решение этой проблемы:
У меня есть приложение Eclipse RCP, которое использует пользовательскую библиотеку, упакованную как jar. Из плагина я вызываю метод внутри jar.
В этом методе я "получаю" ресурс, используя this.class.getResource(relPath)
, в то время как relPath
является жестко заданным относительным путем к нужному мне файлу. Это возвращает мне URL
, который я могу использовать для создания файла
.
Теперь, это прекрасно работает, если я вызываю этот метод не из плагина, а из простой Java-программы.
Разница: Загрузчик классов Eclipse RCP возвращает URL
протокола bundleresource://
, который не поддерживается File
, тогда как при запуске простой Java-программы возвращается file://
-URL, который полностью подходит для построения File
.
Я знаю о FileLocator
-классе Eclipse SDK (который разрешает bundleresource-URLs в file-URLs), но я не могу использовать его в библиотеке, потому что не хочу привязывать его к платформе Eclipse RCP - должна быть возможность использовать эту библиотеку и из не-Eclipse-RCP источников.
У кого-нибудь есть идеи, как я могу загрузить этот ресурс из относительного пути таким образом, чтобы он работал как при вызове метода из Eclipse RCP-Plugin, так и из любого другого клиента?
Мне нужно создать File
в каталоге этого относительного пути для поиска файлов внутри. Я полностью застрял на этом...
UPDATE: Если есть возможность, кроме использования File#list() для получения содержимого директории, это уже помогло бы мне...
любые подсказки очень ценятся,