我想要的只是将它变成Jar工作,Eclipse中没有问题,但jar不播放音乐。我试过几个"解决方案"从谷歌,stackoverflow无论如何。对不起,简短的解释,我的英语说得不太好。希望有人可以提供帮助:(
class Soundboard implements ActionListener {
public Soundboard() {
}
@Override
public void actionPerformed(ActionEvent ev) {
if (ev.getSource() instanceof JButton) {
JButton b = (JButton) ev.getSource();
// getClass().getSystemResource("images/SomeImage.png")
String build = "sound/" + b.getText() + ".au";
try {
playMusic(new File(build));
} catch (UnsupportedAudioFileException | IOException
| LineUnavailableException e) {
e.printStackTrace();
}
}
}
private void playMusic(File file) throws UnsupportedAudioFileException,
IOException, LineUnavailableException {
AudioInputStream stream = AudioSystem.getAudioInputStream(file);
AudioFormat format = stream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(stream);
clip.start();
}
}
答案 0 :(得分:0)
我怀疑在创建jar时,资源文件被放入不同的目录中,当你在Eclipse中构建它们时,所以你的代码看起来错误。您可以通过使用jar -tvf myFile.jar
研究将资源文件放在jar中的位置,以便您的java代码可以找到它们。
希望有所帮助。
编辑:上面执行jar命令时你看到了什么?你应该看到像
这样的东西 >jar -tvf soap-tcp.jar
0 Thu Aug 21 05:05:26 BST 2014 META-INF/
5118 Thu Aug 21 05:05:24 BST 2014 META-INF/MANIFEST.MF
0 Thu Aug 21 05:05:22 BST 2014 META-INF/logmessages/
0 Thu Aug 21 05:05:22 BST 2014 META-INF/loggerinfo/
0 Thu Aug 21 05:05:22 BST 2014 org/
0 Thu Aug 21 05:05:22 BST 2014 org/glassfish/
0 Thu Aug 21 05:05:22 BST 2014 org/glassfish/webservices/
0 Thu Aug 21 05:05:22 BST 2014 org/glassfish/webservices/transport/
仅使用jar中的目录和文件。这将告诉您打包过程放置音频文件的位置。
答案 1 :(得分:0)
您可能应该使用 ClassLoader 将文件内容作为InputStream加载。还要检查音频文件是否在jar中。 - @GáborBakos8分钟前
它正在运作! ClassLoader是缺少的东西!
AudioInputStream stream = AudioSystem.getAudioInputStream(ClassLoader.getSystemResource(file));