Java 在eclipse中工作,但在可执行的
我只想把它放进一个罐子里工作,在Eclipse中没有问题,但罐子不播放音乐。我尝试了谷歌和stackoverflow的几种“解决方案”Java 在eclipse中工作,但在可执行的,java,eclipse,jar,Java,Eclipse,Jar,我只想把它放进一个罐子里工作,在Eclipse中没有问题,但罐子不播放音乐。我尝试了谷歌和stackoverflow的几种“解决方案” class Soundboard implements ActionListener { public Soundboard() { } @Override public void actionPerformed(ActionEvent ev) { if (ev.getSource() instanceof J
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();
}
}
我怀疑当您创建jar时,资源文件被放在与您在Eclipse中构建时不同的目录中,因此您的代码看起来不正确。通过使用
jar-tvf myFile.jar检查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中包含目录和文件。这将告诉您打包过程将音频文件放在何处。您可能应该使用类加载器将文件内容作为输入流加载。还要检查音频文件是否在jar中@Gábor Bakos 8分钟前
它起作用了!类加载器是丢失的东西
AudioInputStream=AudioSystem.getAudioInputStream(ClassLoader.getSystemResource(文件)) 鉴于当前的信息,没有人可以帮助您。到底是什么不起作用?您可能应该使用ClassLoader
将文件内容作为InputStream
加载。还要检查音频文件是否在jar中。@jdv I.jar似乎找不到位于“sound/*.au”@GáborBakos中的声音文件。我应该在哪里添加类加载器?音频文件在罐子里!文件结构是:-声音-图像-(软件包)我在Windows上,用WinRAR打开它,它看起来和你的相似!问题是类加载器…你们应该让他把它作为答案发布,然后标记为“接受答案”。向上投票也没有坏处:)