gpt4 book ai didi

java - Jar玩家无异常(exception)

转载 作者:行者123 更新时间:2023-12-03 02:14:21 27 4
gpt4 key购买 nike

我试图使用MP3而不是wavs,并且它在NetBeans中运行良好,但是当我构建它并尝试运行jar时,没有声音,并且出现了NoPlayerException。

    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获取文件,就像在NetBeans和jar中都可以使用的图像和wav一样。可能是问题 com.sun.media.codec.audio.mp3.JavaDecoder
我现在正在抓稻草。我试过将MP3放在每个文件夹中,不执行/和完整目录。

这是我的异常的 getMessage:

Cannot find a Player for jar:file:/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()));

file:\C:\Users\Patrick\Documents\NetBeansProjects\PatBuild8FX\dist\PatBuild8FX.jar\TheBreach.mp3
java.io.IOException: File Not Found
java.io.IOException: File Not Found
Exception in thread "main" javax.media.NoPlayerException: Error instantiating class: com.sun.media.protocol.file.DataSource : java.io.IOException: File Not Found
at javax.media.Manager.createPlayerForContent(Manager.java:1362)
at javax.media.Manager.createPlayer(Manager.java:417)
at javax.media.Manager.createPlayer(Manager.java:332)
at Build8.PanGame.<init>(PanGame.java:75)
at Build8.Main.main(Main.java:30)

最佳答案

您是否将'TheBreach.mp3'文件打包到jar文件中?上面的异常消息表明正在从您的jar文件访问资源。

我的建议:

  • (如果尚未这样做),请将.mp3文件打包到jar文件中(这使您可以轻松移动单个jar文件,而不必将.mp3文件与之一起复制,而且mp3文件也应现在可以从jar文件访问)或
  • (如果您希望将.mp3文件放在此处),则在传递给java.io.File构造函数之前,尝试使用MediaLocator类加载mp3文件。因此,您将得到如下内容:new MediaLocator(new File("file:///C:\\full_path_to_the_file\\TheBreach.mp3").toURL())
  • 最后,用于解释创建播放器问题的MediaLocator.createPlayer()文档应该很方便。你可以找到它here

  • 祝好运!

    关于java - Jar玩家无异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21213233/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com