尝试访问.wav文件时java.io.FileNotFoundException(不是目录)

时间:2014-02-19 15:59:26

标签: java jar filepath

这与我之前的问题有关,因为它是相同的情况,只是更进一步。

我有一个名为Sample的测试类,它是musicg库中Wave对象的简单包装器:

import com.musicg.wave.Wave;

public class Sample {

    private String filename;
    private Wave wave;
    private WaveHeader waveheader;

    public Sample(String filename) {
        this.filename = filename;
        wave = new Wave(this.filename);
        waveheader = wave.getWaveHeader();
    }
}

我试图通过将绝对路径传递给构造函数来初始化Sample对象。这适用于Eclipse。但是一旦我导出了一个可运行的Jar文件,我在将路径传递给Jar文件中包含的.wav文件时会得到一个java.io.FileNotFoundException。这是我得到的:

java.io.FileNotFoundException: /Users/stas/Documents/java/workspace/EclipseTest/EclipseTest.jar/ORGCSDH1.wav (Not a directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:120)
    at java.io.FileInputStream.<init>(FileInputStream.java:79)
    at com.musicg.wave.Wave.<init>(Wave.java:60)
    at stm.vst.test.Sample.<init>(Sample.java:14)
    at stm.vst.test.Test.populateSamples(Test.java:70)
    at stm.vst.test.Test.main(Test.java:14)

我感到困惑的是(Not a directory)部分。这不是很有帮助,因为显然它不应该是一个目录。这与File not Found异常不同。该文件可验证。

我应该注意到我是可运行的Jar文件的新手,所以我确信我有一些非常简单的东西。

1 个答案:

答案 0 :(得分:0)

当资源被打包到jar文件中时,它们不能作为HDD上的文件使用,而只能作为资源;关注Java Images not drawn when running java -jar以及How do I convert a "jar:file" URI to the path of Jar file?