gpt4 book ai didi

java - 可执行 .Jar 文件中的音乐无法播放

转载 作者:行者123 更新时间:2023-12-01 04:38:02 25 4
gpt4 key购买 nike

我正在使用 JLayer MP3 库在我的程序中播放 MP3 文件。

我的老师告诉我们使用类似的东西:

imageLabel = new JLabel(ImageIcon(this.getClass().getResource("filename.jpg")));

如果我们要将程序导出为可执行的 .jar 文件,则加载音乐和图像。但是,当我对音乐执行此操作时,我收到错误消息“构造函数 MP3(URL) 未定义”。

这是我的 Homepage 类的代码部分:

//Play music 
MP3 mp3 = new MP3(this.getClass().getResource("YGSA.mp3"));
mp3.play();

这是 MP3 类的代码部分:

public class MP3 {
private String filename;
private Player player;

// constructor that takes the name of an MP3 file
public MP3(String filename) {
this.filename = filename;

}

public String toString() {
return filename;
}

public void close() { if (player != null) player.close(); }

// play the MP3 file to the sound card
public void play() {
try {
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
player = new Player(bis);
}
catch (Exception e) {
System.out.println("Problem playing file " + filename);
System.out.println(e);
}

// run in new thread to play in background
new Thread() {
public void run() {
try { player.play(); }
catch (Exception e) { System.out.println(e); }
}
}.start();
}

有没有其他方法可以加载音乐,以便它可以在 .jar 中运行?其他一切都很好。只有音乐在起作用。

我已经被困在这个问题上有一段时间了,所以任何建议将不胜感激!

最佳答案

不要读取资源 URL,而是尝试使用资源作为流。以下是您需要进行的一些更改。尝试重构变量名称。

首先更改您的调用以使用 getResourceAsStream 而不是 getResource。其次,更改 MP3 类构造函数以接收 InputStream 而不是 String(同时将 fileName 变量类型更改为 InputStream。在此处重新命名它们的名称。

最后,更改您的播放方法以使用 inputStream。

MP3 mp3 = new MP3(this.getClass().getResourceAsStream("YGSA.mp3"));
mp3.play();


public MP3(InputStream filename) {
this.filename = filename;

}
public void play() {
try {
BufferedInputStream bis = new BufferedInputStream(fis);
player = new Player(bis);
}
catch (Exception e) {
System.out.println("Problem playing file " + filename);
System.out.println(e);
}

关于java - 可执行 .Jar 文件中的音乐无法播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035656/

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