如何让JAR文件中的音频播放?
How to make audio play in JAR file?
我是 java 编程的新手,当我将我的 java 项目导出到 运行 可用的 JAR 文件时,我试图播放音频,但我保留了当它尝试以 JAR 形式访问音频文件时出现错误。
我尝试了 2 种不同的方式来播放音频(一种有评论,另一种没有)。它们都在编译器中工作。未注释的给我 JAR 文件中的错误,而注释的甚至 运行 JAR 文件都没有!
InputStream in;
AudioStream as;
public void PlayMusic(boolean a)
{
try
{
if (a == false)
{
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream("./lose.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
/*in = getClass().getResourceAsStream("/connectfour/lose.wav");
as = new AudioStream (in);
AudioPlayer.player.start(as);*/
}
else
{
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream("./win.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
/*in = getClass().getResourceAsStream("/connectfour/win.wav");
as = new AudioStream (in);
AudioPlayer.player.start(as);*/
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, "Error");
}
}
我想我可能会错误地访问这些文件,因为它在编译器中工作得很好,但在 JAR 中却没有。
编辑:已解决。我发现了有关使用 url 的信息,因为它们可以处理 jar 文件。
试试:
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("./lose.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
其中“./lose.wav”是音频文件相对于 JAR 文件的位置(而不是主 class 或 src 文件夹)。
我是 java 编程的新手,当我将我的 java 项目导出到 运行 可用的 JAR 文件时,我试图播放音频,但我保留了当它尝试以 JAR 形式访问音频文件时出现错误。
我尝试了 2 种不同的方式来播放音频(一种有评论,另一种没有)。它们都在编译器中工作。未注释的给我 JAR 文件中的错误,而注释的甚至 运行 JAR 文件都没有!
InputStream in;
AudioStream as;
public void PlayMusic(boolean a)
{
try
{
if (a == false)
{
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream("./lose.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
/*in = getClass().getResourceAsStream("/connectfour/lose.wav");
as = new AudioStream (in);
AudioPlayer.player.start(as);*/
}
else
{
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream("./win.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
/*in = getClass().getResourceAsStream("/connectfour/win.wav");
as = new AudioStream (in);
AudioPlayer.player.start(as);*/
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, "Error");
}
}
我想我可能会错误地访问这些文件,因为它在编译器中工作得很好,但在 JAR 中却没有。
编辑:已解决。我发现了有关使用 url 的信息,因为它们可以处理 jar 文件。
试试:
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("./lose.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
其中“./lose.wav”是音频文件相对于 JAR 文件的位置(而不是主 class 或 src 文件夹)。