File and bundleresource:// URLs

Я ломаю голову над этим уже довольно давно и не могу найти решение этой проблемы:

У меня есть приложение 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() для получения содержимого директории, это уже помогло бы мне...

любые подсказки очень ценятся,

8
задан quaylar 27 January 2012 в 10:34
поделиться