#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, они все еще там. Но они не воспроизводятся