Как получить папку из комплекта 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).