У меня проблема с моим дорожком аудиофайла.Проблемы с адресом с банком
Когда я компилирую проект аудио звучит хорошо, но когда я открываю банку он дает мне эту ошибку (я undestand ошибки, но я не могу видеть, что я делаю неправильно ...):
Извините, если на испанском языке «No existe el archivo o el directorio» означает «Нет такого файла или каталога существует».
/home/user1/NetBeansProjects/project1/dist/project1.jar!/music/2.wav Исключение в потоке "Thread-0" java.lang.IllegalStateException: java.io.FileNotFoundException:/Главная/user1 /NetBeansProjects/project1/dist/project1.jar!/music/2.wav (No existe el archivo o el directorio) at logic.AudioFilePlayer.run (AudioFilePlayer.java:54) Вызвано: java.io.FileNotFoundException: /home/user1/NetBeansProjects/project1/dist/project1.jar!/music/2.wav (не существует эль archivo o el directorio) на java.io.FileInputStream.open (собственный метод) на java.io.FileInputStream . (FileInputStream.java:146) на com.sun.media.sound.WaveFloatFileReader.getAudioInputStream (WaveFloatFileReader.java:164) на javax.sound.sampled.AudioSystem.getAudioInputStream (AudioSystem.java:1179) в logic.AudioFilePlayer.run (AudioFilePlayer.java:36)
А вот код:
boolean loop = true;
private final URL url = getClass().getResource("/music/2.wav");
private final String convertFilePath = url.toString();
String filePath = convertFilePath.substring(convertFilePath.lastIndexOf("file:") + 5);
@Override
public void run() {
while (loop == true) {
final File file = new File(filePath);
System.out.println(filePath);
try (final AudioInputStream in = getAudioInputStream(file)) {
final AudioFormat outFormat = getOutFormat(in.getFormat());
final Info info = new Info(SourceDataLine.class, outFormat);
try (final SourceDataLine line
= (SourceDataLine) AudioSystem.getLine(info)) {
if (line != null) {
line.open(outFormat);
line.start();
stream(getAudioInputStream(outFormat, in), line);
line.drain();
line.stop();
}
}
} catch (UnsupportedAudioFileException | LineUnavailableException | IOException e) {
throw new IllegalStateException(e);
}
}
}
private AudioFormat getOutFormat(AudioFormat inFormat) {
final int ch = inFormat.getChannels();
final float rate = inFormat.getSampleRate();
return new AudioFormat(PCM_SIGNED, rate, 16, ch, ch * 2, rate, false);
}
private void stream(AudioInputStream in, SourceDataLine line)
throws IOException {
final byte[] buffer = new byte[4096];
for (int n = 0; n != -1; n = in.read(buffer, 0, buffer.length)) {
line.write(buffer, 0, n);
}
}
Является ли звуковой файл в файле jar? Если это так, вы должны использовать другие средства для чтения файла. – NESPowerGlove
@NESPowerGlove Да, он включен, а также изображения, они попадают в комплекте, когда проект скомпилирован в их собственной папке, но по какой-то причине они отлично работают, за исключением аудиофайла:/ –
Вы также используете объект File загружать изображения? Если изображения собраны в банке, убедитесь, что вы случайно не загружаете одинаковые изображения, которые также существуют в вашей файловой системе. Если вы правильно загружаете изображения из фляги, вы знаете правильный метод, который вам нужно использовать для получения потока звукового файла из банки. – NESPowerGlove