Java "получить файлы ресурсов" возвращает ноль после сборки maven - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть приложение, загружающее журналы некоторых ресурсов, свойства и т. Д. *

URL pathUrl = this.getClass().getResource("../logs/logfile.log");

или

ClassLoader classLoader = getClass().getClassLoader(); URL pathUrl = classLoader.getResource("../logs/logfile.log");

или

URL pathUrl = myClass.class.getClassLoader().getResource("../logs/logfile.log");

Когда я собираю его с помощью maven в jar-приложение, оно возвращает ноль, а до сборки работает нормально.

mvn pom.xml:

 <resources>
       <resource>
           <directory>src/main/resources</directory>
       </resource>
  </resources>

Есть идеи, как заставить его работать после сборки?Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Похоже, ваш ресурс не находится в каталоге src / main / resources , так как вы обращаетесь к родительскому каталогу

.. / logs /logfile.log

Когда вы говорите, что он работает нормально перед сборкой, я предполагаю, что вы запускаете его с IDE, которая, вероятно, попытается получить доступ к ресурсу из файловой системы, чтобы он мог получить доступ к src / main / resources родительский каталог, где он может найти logs / logfile.log .

Однако вы не включаете родительский каталог в сборкуобработайте, чтобы в результирующем банке не было такого файла ресурсов.

Обратите внимание, что существует разница между

this.getClass().getResource("../logs/logfile.log");

и

getClass().getClassLoader().getResource("../logs/logfile.log");

, так что это маловероятночто оба они добились успеха еще до сборки.(если вы не создали несколько файлов logs / logfile.log во время тестирования)

0 голосов
/ 21 декабря 2018

Попробуйте

Thread.currentThread (). GetContextClassLoader (). GetResourceAsStream ("logs / logfile.log)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...