Нет звука при экспорте Java-проекта в .JAR

#java #audio #jar #executable-jar

#java #Аудио #jar #исполняемый файл-jar

Вопрос:

Делал 2d-платформер и только что сделал для игры пользовательскую музыку. Музыкальные / игровые звуковые эффекты воспроизводятся нормально, когда я запускаю их из Eclipse, моей IDE, но как только игра экспортируется в файл JAR, все функционирует нормально, за исключением отсутствия звука. Ни один из эффектов, ни одна музыка.

Вот код для класса, который обрабатывает воспроизведение звука:

 
import javax.sound.sampled.*;

public class AudioPlayer {
    
    private Clip clip;
    
    public AudioPlayer(String s) {
        
        try {
            
            AudioInputStream ais =
                AudioSystem.getAudioInputStream(
                    getClass().getResourceAsStream(
                        s
                    )
                );
            AudioFormat baseFormat = ais.getFormat();
            AudioFormat decodeFormat = new AudioFormat(
                AudioFormat.Encoding.PCM_SIGNED,
                baseFormat.getSampleRate(),
                16,
                baseFormat.getChannels(),
                baseFormat.getChannels() * 2,
                baseFormat.getSampleRate(),
                false
            );
            AudioInputStream dais =
                AudioSystem.getAudioInputStream(
                    decodeFormat, ais);
            clip = AudioSystem.getClip();
            clip.open(dais);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        
    }
    
    public void play() {
        if(clip == null) return;
        stop();
        clip.setFramePosition(0);
        clip.start();
    }
    
    public void stop() {
        if(clip.isRunning()) clip.stop();
    }
    
    public void close() {
        stop();
        clip.close();
    }
    
}
  

И вот как звук вызывается в других классах:

         bgMusic = new AudioPlayer("/Music/level1-1.mp3");
        bgMusic.play();
    }
  

Любая помощь будет оценена.

Комментарии:

1. Добро пожаловать в Stackoverflow. Вы уверены, что ваш путь «/ Music / level1-1.mp3» указывает на то же место, что и во время программирования в Eclipse?

2. Итак, это странная часть с организацией папок. В Eclipse есть две основные папки: src и resources . Однако, когда я экспортирую в jar, а затем разархивирую, это выглядит так gyazo.com/027ae1fdfd95f7a8728c752f70ec7c88 . Все папки, которые были в «ресурсах» или «источнике», теперь собраны вместе. Но все по-прежнему функционирует должным образом, кроме звука. Я не понимаю.

3. @MichaelFehr Пожалуйста, прочитайте комментарий выше. Я несколько новичок в кодировании и не понимаю концепции того, как путь будет отличаться при экспорте

4. Вы загружаете mp3-файл из внешнего источника и — пока я могу прочитать ваш код — не из чего-то, что находится в разделе «источник» или «ресурсы», поэтому аудиопроигрыватель не имеет прямого доступа к вашему файлу.

5. @MichaelFehr Вот организация файлов в eclipse: gyazo.com/86cc7fcbf0cd2beb0ea9d9123294ffb4 Как вы можете видеть, звуковые файлы находятся внутри ресурсов, а не расположены извне. Когда я извлекаю файл jar, они все еще там. Но они не воспроизводятся