Jar文件无效(在cmd中运行时filenotfoundexception)

时间:2017-04-15 16:40:36

标签: java eclipse jar

我知道这个话题已经出现了很多次,而且我已经在sollution后看了几个小时的stackoverflow,但仍然没有工作。从Eclipse中我无法在导出可运行的jar文件时使我的jar文件工作。当我运行它时程序在Eclipse中完美运行但是当我尝试打开jar文件时,屏幕会变黑并持续一秒钟然后没有任何反应。我尝试使用java -jar nameoffile.jar在命令中打开它,并且有filenotfoundexception。当我试图运行它时,这就像cmd中的样子。

有人有任何建议吗? 感谢

enter image description here

1 个答案:

答案 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中运行时读取你的文件。

关于如何打包应用程序并进行部署,还可以说更多,但这只是一个开始。