2013-07-13 2 views
0

ОК, поэтому у меня есть этот код, и он работает, пока я играю в Eclipse. но когда я его экспортирую, он вообще не воспроизводит звук. Как мне его экспортировать или что делать, чтобы заставить его работать?Просто небольшая ошибка при создании Java-игры

package sound; 
import java.io.InputStream; 
import javax.sound.sampled.AudioInputStream; 
import javax.sound.sampled.AudioSystem; 
import javax.sound.sampled.Clip; 
public class GameSounds 
{ 
    public static synchronized void hit() 
    { 
     try 
     { 
      String resPath = "/sounds/8bit_bomb_explosion.wav"; // *** this is the key *** 
      InputStream audioInStream = GameSounds.class.getResourceAsStream(resPath); 
      System.out.println("is audioInStream null?: " + (audioInStream == null)); // test it! 
      AudioInputStream inputStream = AudioSystem.getAudioInputStream(audioInStream);   Clip clip = AudioSystem.getClip(); 
      clip.open(inputStream); 
      clip.start(); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

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

и есть никакое исключение не выбрасывается

путем регистрации выхода вы имеете в виду, что «is audioInStream null?» если да, то это ложь и нет никаких исключений.

+5

Итак, каков ваш выход для регистрации? И это исключение? –

+0

1) Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). 2) Пожалуйста, добавьте письмо в верхнем регистре в начале предложений. Также используйте капитал для слова I, аббревиатуры и аббревиатуры, такие как JEE или WAR. Это облегчает людям понимание и помощь. –

+0

Проверьте содержимое своей банки. Он содержит файл '8bit_bomb_explosion.wav' под папкой' sounds'? Помните, что файл jar - это просто zip-файл с расширением .jar. –

ответ

0

Проблема, вероятно, в том, что вы используете InputStream и что они могут быть протестированы на предмет маркировки и сброса. Звуковые файлы, как правило, также не поддерживаются, поэтому будет инициировано какое-то исключение.

Решение заключается в использовании URL вместо этого. Затем вы можете получить AudioInputStream, не пройдя промежуточный шаг InputStream.

Таким образом, вместо построения строки создайте URL-адрес и укажите это как входной параметр для метода getResourceAsStream(). Если вы посмотрите на spec для этого метода, вы увидите три перегрузки: File, URL, InputStream. Я считаю, что URL-адрес работает наилучшим образом, поскольку URL-адрес может указывать ресурс, упакованный в JAR-файл, и не проверяется на ошибки метки/сброса.

0

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

Причина, почему я рекомендую вам запустить его из CMD/терминала, поскольку любые ошибки, которые могут возникнуть появятся в CMD/терминала, а затем вы можете начать ломать проблему немного больше

-java банку PathAndNameOfJar. jar

heres a video

Смежные вопросы