2014-01-19 2 views
0

Я пытался использовать mp3s вместо wavs, и он отлично работает в netbeans, но когда я его создаю и пытаюсь запустить банку, нет звука, и я получаю исключение NoPlayerException.No Player Exception With Jar

background = ImageIO.read(getClass().getResourceAsStream("/background1.png")); 
    sun = ImageIO.read(getClass().getResourceAsStream("/sun.png")); 
    cloud = ImageIO.read(getClass().getResourceAsStream("/cloud.png")); 
    pause = ImageIO.read(getClass().getResourceAsStream("/pause.png")); 
    soldierchant = AudioSystem.getAudioInputStream(getClass().getResource("/SoldiersChant.wav")); 
    thebreach = AudioSystem.getAudioInputStream(getClass().getResource("/TheBreach.wav")); 
    forever = AudioSystem.getAudioInputStream(getClass().getResource("/Forever.wav")); 

    Format input1 = new AudioFormat(AudioFormat.MPEGLAYER3); 
    Format input2 = new AudioFormat(AudioFormat.MPEG); 
    Format output = new AudioFormat(AudioFormat.LINEAR); 
    PlugInManager.addPlugIn("com.sun.media.codec.audio.mp3.JavaDecoder", new Format[]{input1, input2}, new Format[]{output}, PlugInManager.CODEC); 
    try { 
     Player player = Manager.createPlayer(new MediaLocator(getClass().getResource("/TheBreach.mp3").toURI().toURL())); 
     player.start(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    }catch (java.net.URISyntaxException x) { 
     x.printStackTrace(); 
    }catch (javax.media.NoPlayerException c) { 
     c.printStackTrace(); 
    } 

Как вы можете видеть, что я получаю файл с помощью getResource так же, как изображения и WAV, которые работают как в NetBeans и баночки. Может ли это быть проблемой «com.sun.media.codec.audio.mp3.JavaDecoder»

Я сейчас хватаю соломинку. Я пробовал помещать mp3 в каждую папку и не делал/и полный каталог. Ничего:/

Это мой Exception в GetMessage:

Не можете найти плеер для фляги: файл:/C: /Users/Patrick/Documents/NetBeansProjects/PatBuild8FX/dist/PatBuild8FX.jar/TheBreach .mp3

Хорошо, поэтому я думаю, что его Manager.createPlayer. Потому что, когда я просто создаю только файл, это прекрасно, но когда я пытаюсь создать с ним игрока, он не работает.

File m = new File("file:/C:/Users/Patrick/Documents/NetBeansProjects/PatBuild8FX/dist/PatBuild8FX.jar/TheBreach.mp3"); 
    System.out.println(m); 
    System.out.println(Manager.createPlayer(m.toURI().toURL())); 

файл: \ C: \ Users \ Patrick \ Documents \ NetBeansProjects \ PatBuild8FX \ \ расстояние PatBuild8FX.jar \ TheBreach.mp3 java.io.IOException: Файл не найден java.io.IOException : Файл не найден Исключение из потока "main" javax.media.NoPlayerException: экземпляр класса экземпляра: com.sun.media.protocol.file.DataSource: java.io.IOException: файл не найден в javax.media.Manager. createPlayerForContent (Manager.java:1362) at javax.media.Manager.createPlayer (Manager.java:417) at javax.media.Manager.createPlayer (Manager.java:332) в Build8.PanGame. (PanGame.java:75) в Build8.Main.main (Main.java:30)

+0

Попробуйте использовать этот новый MediaLocator (getClass(). GetResource ("/ TheBreach.mp3") ' –

+0

Похоже, что это проблема с Manager.createPlayer. См. Edit. –

ответ

0

ли вы упаковали файл 'TheBreach.mp3' в файл банку? Вышеупомянутое сообщение об исключении указывает на доступ к ресурсу из вашего файла jar.

Мои предложения:

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

  • Если вы предпочитаете иметь файл .mp3, где он есть, попробуйте использовать класс java.io.File для загрузки mp3, перед тем как перейти к конструктору MediaLocator. Таким образом, вы бы тогда что-то вроде: new MediaLocator(new File("file:///C:\\full_path_to_the_file\\TheBreach.mp3").toURL())

  • наконец, документация по MediaLocator.createPlayer() объясняющих вопросов с созданием игроков должны быть под рукой. Вы можете найти его here

Удачи вам!

+0

Я уже упаковываю mp3 с банкой, я использовал WinRAR, чтобы открыть банку и ее там. Полный каталог не работает. –