Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个JAR文件中包含Java程序的所有库、音频等_Java_Netbeans_Audio_Jar_Getresource - Fatal编程技术网

在一个JAR文件中包含Java程序的所有库、音频等

在一个JAR文件中包含Java程序的所有库、音频等,java,netbeans,audio,jar,getresource,Java,Netbeans,Audio,Jar,Getresource,我正在使用Netbeans,我正在尝试找出如何将我所有的库、音乐、图像等放在一个JAR文件中进行分发。我想我已经找到了这些库,但是音频、图像和其他类似的文件给我带来了麻烦 在我当前的项目中,我有一个音频文件,我也想将其嵌入JAR文件中。首先我尝试了一个罐子,但几个小时后我放弃了。我将音频文件放入JAR文件中,但我无法从程序中访问它。我知道我需要按照建议使用getResourceAsStream,但我不清楚在获得输入流后我该做什么。我所能看到的使其工作的唯一方法是使用输入流并创建一个全新的文件(见

我正在使用Netbeans,我正在尝试找出如何将我所有的库、音乐、图像等放在一个JAR文件中进行分发。我想我已经找到了这些库,但是音频、图像和其他类似的文件给我带来了麻烦

在我当前的项目中,我有一个音频文件,我也想将其嵌入JAR文件中。首先我尝试了一个罐子,但几个小时后我放弃了。我将音频文件放入JAR文件中,但我无法从程序中访问它。我知道我需要按照建议使用
getResourceAsStream
,但我不清楚在获得输入流后我该做什么。我所能看到的使其工作的唯一方法是使用
输入流
并创建一个全新的文件(见下文…它可以工作),但是创建一个新文件似乎是一种浪费(我不希望人们在我的程序运行时看到音频文件出现)当音频文件仍包含在
.JAR
文件中时,是否无法直接访问该音频文件?

File file = new File("myAudio.wav");
InputStream stream = mypackage.MyApp.class.getResourceAsStream("audio/myAudio.wav");
        try {
            OutputStream out = new FileOutputStream(file);
            byte buf[] = new byte[1024];
            int len;
            while ((len = inputStream.read(buf)) > 0) {
                out.write(buf, 0, len);
            }
            out.close();
            inputStream.close();
        } catch (IOException e) {
        }
编辑:

我的JAR文件的内部结构包含1.)一个库包(),2.)我的包,它是我的类文件的直接父级和一个名为“audio”的文件夹,其中包含
myAudio.wav
,以及3.)一个
META-INF
文件夹,其中包含我的
manifest.mf

编辑

音频流是这样读的。我曾尝试直接使用
InputStream
,但没有成功。我想再次指出,当我从
JAR
文件中包含的音频文件的输入流创建一个新的音频文件时,我已经拥有了它,但是就像我之前所说的,当文件已经存在于
JAR
中时,每次运行一个程序时创建一个大的音频文件似乎是一种浪费。这是我试图避免的

AudioInputStream stream;
Clip music;
        try {
            stream = AudioSystem.getAudioInputStream(file);
        } catch (IOException e) {
        } catch (UnsupportedAudioFileException e) {
        }
        try {
            music = AudioSystem.getClip();
        } catch (LineUnavailableException e) {
        }
        try {
            start();
        } catch (Exception e) {
        }
public void start() throws Exception {
    music.open((AudioInputStream) stream);
    music.start();
    music.loop(Clip.LOOP_CONTINUOUSLY);
}

AudioSystem.getAudioInputStream(流)为您工作?

AudioSystem.getAudioInputStream(流)为你工作?

你能详细说明你的jar组织吗?(我的意思是,解压后的jar上有一个
)@Riduidel我添加了一些细节。你能详细说明你的jar组织吗?(我的意思是,解压的罐子上有一棵
)@Riduidel我添加了一些细节。是的。先生,你就是那个人。。。不知道我怎么会错过:)是的。先生,你就是那个人。。。不知道我怎么会错过:)