我知道这个话题已经出现了很多次,而且我已经在sollution后看了几个小时的stackoverflow,但仍然没有工作。从Eclipse中我无法在导出可运行的jar文件时使我的jar文件工作。当我运行它时程序在Eclipse中完美运行但是当我尝试打开jar文件时,屏幕会变黑并持续一秒钟然后没有任何反应。我尝试使用java -jar nameoffile.jar在命令中打开它,并且有filenotfoundexception。当我试图运行它时,这就像cmd中的样子。
有人有任何建议吗? 感谢
答案 0 :(得分:1)
问题在于如何获得资源。
您将wav文件放在src
文件夹中,尝试使用FileInputStream获取它们,但这样做无法正常工作。
如果您将文件放入jar中,则应通过以下方式访问它们:
getClass().getResourceAsStream(filepath)
像这样。
public class LoadFile {
public static void main(String[] args) throws Exception {
InputStream stream =
LoadFile.class.getResourceAsStream("/songwavs/s1_..._.wav");
AudioSystem.getAudioFileFormat(stream);
AudioSystem.getAudioFileFormat(url);
}
}
这只是一个例子,重点是作为jar中的资源,ClassLoaders是获取它的工具。
因此,在非静态方法中,您可以使用:
public void myMethod() throws Exception{
InputStream stream = getClass().getResourceAsStream("/songwavs/s1_..._.wav");
AudioSystem.getAudioFileFormat(stream);
}
在某些情况下,你需要像这样使用Thread类加载器:
public void myMethod2() throws Exception{
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/songwavs/s1_..._.wav");
AudioSystem.getAudioFileFormat(stream);
}
然后你可以在从eclipse或jar中运行时读取你的文件。
关于如何打包应用程序并进行部署,还可以说更多,但这只是一个开始。