Я работаю с локальным сервером WebSphere, настроенным в IntelliJ Idea, и приложение, над которым я работаю, использует стороннюю библиотеку, которая загружает файл свойств с:
ThirdPartyClass.class.getClassLoader().getResourceAsStream(fileNameParameter);
Он использует загрузчик bootstrapClassLoader по умолчанию.
Мне было поручено убедиться, что файл свойств находится в каталоге конфигурации, чтобы его можно было редактировать без развертывания изменения кода. Мой проект выглядит примерно так:
ProjectName
Configs
my.properties
src
java (sources root)
packages, .java files, etc
main (resources root)
schemas, web docs, etc
Я пробовал несколько способов заставить его работать, но он всегда возвращает null. Поскольку я изначально думал, что он идет из стороннего пакета библиотеки, я попытался добавить несколько .. \ к пути к файлу, но потом я узнал, что этот метод загружается из пути к классам, поэтому я вытащил
String test = System.getProperty("java.class.path");
и после проверки мой путь к классам состоит из каталогов websphere и jar-файлов внутри них:
C: \ Users \ me \ Programs \ IBM \ AppServer \ profiles \ AppSrv01 / properties C: \ Users \ me \ Programs \ IBM \ AppServer \ AppSrv01 / properties и несколько файлов jar в C: \ Users \ me \ Programs \ IBM \ AppServer / lib /
Так что в качестве теста я застрял файл в C: \ Users \ me \ Programs \ IBM \ AppServer \ AppSrv01 / properties, затем попытался захватить его только с его именем файла (my.properties), но все равно не смог до него добраться. Я также пробовал переместить файл в директорию sr c и в основную директорию, но, что бы я ни делал, мне просто не удается найти файл.
Я знаю, что этот метод обычно используется для захвата ресурсов из файла jar, но, насколько я понимаю, кажется, что можно получить доступ к моему файлу извне, если он находится в каталоге в пути к классам ... но, по-видимому, нет, поскольку это не не работает.
У меня есть абсолютный путь на моем жестком диске, и я буду указывать этот путь на сервере; есть ли способ получить путь, который ClassLoader.getResourceFromStream () хочет с этой информацией? В противном случае, есть ли очевидная ошибка, которую я делаю с URL-адресом ресурса?