В общем ситуация такая: я делаю обертку для дальнейшего приложения, суть обертки - возможность расширения приложения плагинами, для безопасности (чтоб плагин не мог влиять на ядро) надо сделать систему с иерархией загрузчиков:
Bootstrap
|
Common CL
/ | \
AppCore Plugin1 PluginN
В классе Bootstrap для загрузки API плагинов необходимо получить файлы директории common
делаю я это так:
URI uri = Bootstrap.class.getResource(Bootstrap.class.getSimpleName() +".class").toURI
if (!"jar".equalsIgnoreCase(uri.getScheme())) { //не в jar
logger.severe("Source \"" + Bootstrap.class.getSimpleName() + ".class\" is not in a jar file!");
}
try (FileSystem fs = FileSystems.newFileSystem(uri, Collections.emptyMap())) {
Files.list(fs.getPath("/")).forEach(System.out::println);//выводим список фалов
проблема в том что этот код работает только когда запускается из jar, при отладке и запуске через ide он не работает и выдает ошибку
java.lang.IllegalArgumentException: Path component should be '/'
хотя System.out.println(uri.getPath());
дает верный путь вида /D:/WORKSPACE/PluginIncludingSave/out/production/PluginIncludingSave/load/Bootstrap.class
Я понимаю что это связано с тем что ide пускает код не из jar
Вопрос, есть ли возможность как то обойти это, чтоб код, получающий директорию и потом список файлов в ней, одинаково работал и в ide и в jar ( возможно сделать 2 варианта получения этой директории)?
В инете ничего дельного не нашел, все предлагают использование потока и getResourceAsStream();
Но я не нашел как через InputStream
получить содержимое директории и потом загружать файлы или получать url
для UrlClassLoader-а
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как считать значение переменной реестра типа reg_binary? К примеру значение переменной типа reg_sz читаю кодом нижеНо при попытке обратиться к типу...
Решил попробовать данную БД для работы, но никак не пойму, как вытаскивать оттуда данныеЗанести получилось, потом использую: realm
Как сделать так, чтобы DIV который находится внутри основного DIV-a, выделялся на нем только в определенном месте? Выглядит это так: основной...