Как получить доступ к нескольким файлам ресурсов с одинаковыми именами? - PullRequest
0 голосов
/ 29 сентября 2018

Предположим, у меня есть два пакета p1 & p2 с ресурсом с именем abc.properties: com.example.p1\abc.properties и com.example.p2\abc.properties.

После компиляции программы я могу получить доступ только к com.example.p1\abc.properties, используя getClass().getResource(“abc.properties”), из-за порядка пути к классам.

Есть ли способ получить доступ к другому файлу (com.example.p2\abc.properties)?

UPD: Я обнаружил, что структура упакованного jar выглядит следующим образом: p1-1.0.jar: com.example.p1 META-INF abc.properties p2-1.0.jar: com.example.p2 META-INF abc.properties Так что на самом деле такой код getClass().getResource(“/com/example/p1/abc.properties”) у меня не работал

1 Ответ

0 голосов
/ 29 сентября 2018

По умолчанию ресурсы разрешаются относительно используемого экземпляра Class - поэтому, если ваш класс находится в пакете com.example.p1 и вы используете getClass().getResource("abc.properties"), вы получите com/example/p1/abc.properties.

Чтобы исправить это, вы можете использовать абсолютные пути для разрешения ресурсов - например, getClass().getResource("/com/example/p1/abc.properties") или getClass().getResource("/com/example/p2/abc.properties").Обратите внимание, что вам нужно предварять путь косой чертой и заменять любые точки в пути косой чертой.

...