Как получить папку из комплекта OSGI?

У меня есть собственный OSGI-пакет, в котором есть папка с некоторыми ресурсами. Как прочитать эту папку из комплекта и получить от нее все дочерние элементы?

Я использовал до следующего кода.

    Bundle bundle = Platform.getBundle(bundleID);
    URL fileURL = bundle.getEntry(templatePath);
    URL url = FileLocator.resolve(fileURL);

Этот рабочий код использует экспортированное приложение Eclipse как продукт Eclipse.

Но у меня URL не является иерархическим исключением.

2 ответа

Решение

Вы можете использовать метод findEntries в Bundle, чтобы найти файлы в комплекте и любые прикрепленные фрагменты:

Bundle bundle = Platform.getBundle(bundleID);
Enumeration<URL> urls = bundle.findEntries("/folder", "*", false);

Вы должны написать свой код в терминах InputStreams и использовать метод, предложенный Nick Wilson, для извлечения входных потоков и использования их в вашей программе.

Но если вам действительно нужно, чтобы эта папка была где-то взорвана на диске, вы должны использовать org.eclipse.core.runtime.FileLocator.toFileURL(URL) вместо resol (URL).

Другие вопросы по тегам