我正在Eclipse中开发一个Java项目。我想把这个项目部署到一个jar文件中。让音频运行是我有困难的一部分。我使用javazoom的mp3spi库来播放mp3文件。( http://www.javazoom.net/mp3spi/sources.html )
我在javazoom网站上实现了我的AudioPlayer,就像示例一样。( http://www.javazoom.net/mp3spi/documents.html )
我可以在这里再次发布冗长的代码,但与我的AudioPlayer扩展线程以便它可以独立运行的区别几乎是一样的。(它在开发环境中工作得很好)
我的问题是,当我将项目导出到一个jar中时,我无法让它运行。我已经找到了很多关于这个话题的问题和建议,并且我尝试了其中的大部分。遗憾的是,我仍然没有一个可行的解决方案。我肯定它在外面,但在这一点上,我可能会想念森林的树木。
所有必需的库(jl1.0.1.jar、tritonus_share.jar和mp3spi1.9.5.jar)都在我的jar中,并添加到类路径中。
代码的中心点似乎是AudioInputStream (在示例的第10行),它需要创建一个文件。
第一次尝试-类似于javazoom.net上建议的代码:
File file = new File("src/resources/audio/test.mp3");
AudioInputStream ain = AudioSystem.getAudioInputStream(file);所发生的是:
Eclipse :工作正常,mp3播放。
导出的Jar文件:Jar工作,但mp3不播放。
导出Jar - windows控制台打开文件:Jar工作,但mp3不播放。
错误消息: at audio.AudioPlayer.run(AudioPlayer.java:40) java.io.FileNotFoundException: src\resources\audio\test.mp3
所以我不能在jar中使用“file”,因为我处理的不是文件系统中的文件,而是jar中的一个文件。
第二次尝试
URL url = ClassLoader.getSystemResource("resources/audio/test.mp3");
AudioInputStream ain = AudioSystem.getAudioInputStream(url);所发生的是:
Eclipse :工作正常,mp3播放。
导出的Jar文件:Jar工作,但mp3不播放。
导出Jar - windows控制台打开文件:Jar工作,但mp3不播放。
错误消息: javax.sound.sampled.UnsupportedAudioFileException:无法从javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source的输入URL ( audio.AudioPlayer.run(AudioPlayer.java:40) )获取音频输入流
我不能从网址上得到AudioInputStream?我不知道。所以让我们开始..。
第3次和第4次尝试
企图3:
BufferedInputStream myStream = new BufferedInputStream(getClass().getResourceAsStream("/resources/audio/test.mp3"));
AudioInputStream ain = AudioSystem.getAudioInputStream(myStream);企图4:
BufferedInputStream myStream = new BufferedInputStream(ClassLoader.getSystemResourceAsStream("resources/audio/test.mp3"));
AudioInputStream ain = AudioSystem.getAudioInputStream(myStream);同样,这两个结果都在Eclipse中播放,而在jar中却没有。
导出Jar - windows控制台打开文件:Jar工作,但mp3不播放。
错误消息: javax.sound.sampled.UnsupportedAudioFileException:无法从javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source的输入流获得audio.AudioPlayer.run(AudioPlayer.java:40)的音频输入流
我在这里真的迷路了。任何帮助都将不胜感激。
相关专题:
File path or file location for Java - new file()
Reading File In JAR using Relative Path
Java Audio Stream (mp3spi lib), UnsupportedAudioFileException
发布于 2014-03-16 09:53:00
我过去总是以jar的形式导出我的项目,以类似方式加载的所有图像都会正确加载,而音频文件则不会加载。
现在,我试图将我的项目导出为一个可运行的jar,它运行得很好(尝试4,可能还有其他尝试)。下面的问题和答案解释了jar和runnable jar之间的区别。
Java Eclipse: Difference between exporting as a JAR and exporting as a Runnable JAR
清单文件如何影响资源的正确加载
ClassLoader.getSystemResourceAsStream我不知道,但很明显是这样的。
有人可能想详细说明那些最原始的文件,因为我真的不能。或者,也许在输出一个jar和一个可运行的jar之间还有其他的区别。
既然我有一个可行的解决办法,我现在就不谈这个问题了。
https://stackoverflow.com/questions/22423208
复制相似问题