Сгенерированный .jar не может загрузить некоторые медиа-файлы - PullRequest
0 голосов
/ 21 сентября 2018

Я создал Java-программу, используя IntelliJ.Эта программа загружает медиа-файлы, такие как изображения (.jpg) и аудио (.wav).

Когда я запускаю свой проект внутри IDE, он работает нормально.Но когда я генерирую .jar файл моего проекта, изображения и аудио файлы не будут загружаться.

  • Когда я пытаюсь загрузить аудио файл .wav, я получаю FileNotFoundException
  • Когда я пытаюсь загрузить файл .jpg, я получаю IIOException: Can't read the input file!

Я загружаю изображение так:

image = ImageIO.read(ImageScreen.class.getResourceAsStream("/quiz/resources/images/image_1.jpg"));`

Когдая проверяю верхнюю часть трассировки стека в отладчике, я вижу: javax.imageio.ImageIO.read(Unkown Source).

В других частях моего приложения я могу загружать текстовые файлы из аналогичного каталога, как это, и это работаетв файле .jar тоже:

reader = new BufferedReader(
    new InputStreamReader(
        WordScreen.class.getResourceAsStream(
            "/quiz/resources/words/wordlist.txt")));`

У меня только один пакет с именем quiz в моем проекте, и я не понимаю, почему это не работает, так как я указываю абсолютный путь.

Я смотрел на другие вопросы, такие как на этот , но, по моему мнению, я делаю то, что предлагается.

Ответы [ 2 ]

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

Спасибо всем за помощь.Мне удалось найти решение для моей проблемы.

Я изменил это:

image = ImageIO.read(ImageScreen.class.getResourceAsStream("/quiz/resources/images/image_1.jpg"));

На это:

image = ImageIO.read(this.getClass().getResourceAsStream("/quiz/resources/images/image_1.jpg"));

Я сейчас получаю .wav так же и работает:

this.getClass().getResourceAsStream("/quiz/resources/audio/audio1.wav");
0 голосов
/ 21 сентября 2018

попробуйте с getClassLoader ()

this.getClass().getClassLoader().getResourceAsStream...
...