1

我有两个班级(Playeditor)。editor使用Play. Play使用一些外部文件。我将它们导入 Eclipse 以便直接处理它们(如您在第一个屏幕截图中所见)。 在此处输入图像描述 我希望 JAR 能够包含这些文件并能够使用(导入)它们。那可能吗?将项目导出到 JAR 时应该选择哪些选项?

4

1 回答 1

3

如果您想使用.wavjar 中的文件,而不是String path = System.getProperty("user.dir");从那里加载 wav 文件,请尝试执行以下操作:

InputStream stream = Play.class.getResourceAsStream("/result.wav");

这里开始,似乎AudioSystem确实有一个重载getAudioInputStream,它接受一个InputStream而不是一个File对象(如您的代码中所示)。所以你可以有类似的东西:

public class Play{
    public AudioInputStream find(String s) throws UnsupportedAudioFileException, IOException{
        // Probably some try catch over the next statement to log the error if `result.wav` is not found.
        InputStream stream = Play.class.getResourceAsStream("/result.wav");
        return AudioSystem.getAudioInputStream(stream); 
    }
}

为了使上述工作正常,您*.wav必须将所有文件复制到源文件夹中,以便它们出现在类路径中。为此,您可以将 *.wav 移入sint/src开始(wav如果需要,稍后移入适当的文件夹)。这会将它们放在类路径的根目录中,/并允许像这样引用它们 :/result.wav/x_SECOND.wav

工作代码

这是一些可以AudioInputStream这里测试的工作代码:

public class A {    
    @Test
    public void testAudioInputStream() throws UnsupportedAudioFileException, IOException {
        InputStream stream = A.class.getResourceAsStream("/result.wav");
        System.out.println(stream != null);
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(stream);
        System.out.println(audioInputStream != null);
    }    
}

上面的代码对我来说很好,我true在控制台中有两个。

带有测试项目的 GIT Hub 存储库

您应该能够在zip 中导入项目并查看代码是否正常工作。

你需要一个“胖罐子”吗?

有点跑题了,但是如果您需要构建一个 fat jar包含项目运行所需的所有 jar 并且是单个可执行文件的文件,那么请尝试使用http://fjep.sourceforge.net/插件来构建一个胖 jar。

您可以使用File -> Export -> Other -> One Jar Exporter. 这样构建的 jar 是一个可执行的 jar,不需要其他任何东西来运行。

于 2012-08-21T11:05:55.443 回答