У меня есть простая структура: файл jar данных, содержащий пакет данных, и файл службы jar, который запускает службу с использованием данных. Чтобы упростить замену данных, я их разделяю, а путь к классам service.jar содержит каталог, в котором находится data.jar.Доступ к ресурсам из другого файла jar
В пределах service.jar я использую getResource для загрузки файлов данных. Это работает, если файлы данных находятся непосредственно в папке, но не удается, когда они находятся внутри data.jar;
Это не удается:
all
+ globalclasspath
| + data.jar
| + mine.properties
+ daemons
+ service.jar
jsvc -cp globalclasspath:daemons/service.jar (...)
MyClass.class.getClassLoader().getResource("mine.properties"); // <-- null
Но это работает:
all
+ globalclasspath
| + mine.properties
+ daemons
+ service.jar
jsvc -cp globalclasspath:daemons/service.jar (...)
MyClass.class.getClassLoader().getResource("mine.properties"); // <-- not null
Я не хочу, чтобы изменить путь к классам (если я не могу изменить его на что-то общее, не зависит от имя файла данных jar), но я в порядке с изменением строки getResource (я пробовал /data/mine.properties и /data.jar/mine.properties безрезультатно). Есть ли изменения, которые я могу сделать, чтобы ресурсы могли быть загружены из контейнера?
К сожалению, я на самом деле с помощью 'getResourceAsStream' уже (я написал' getResource', потому что я не был я не знал о какой-либо разнице, и это казалось более простым) – Dave