Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Java 在runnable jar-eclipse中包含音频文件_Java_Eclipse_Runnable Jar - Fatal编程技术网

Java 在runnable jar-eclipse中包含音频文件

Java 在runnable jar-eclipse中包含音频文件,java,eclipse,runnable-jar,Java,Eclipse,Runnable Jar,我发现这个问题的答案都不起作用,所以我不得不问: 我正在使用Eclipse,我有一个程序,我将其导出为可运行的jar,它会播放音频,但音频必须与导出的jar文件位于同一文件夹中,否则它不会播放。如何将其打包到可运行的jar中,使其不需要音频就可以在那里? PS:我用老式的方式做事,所以不使用构建系统(Maven或Gradle) 这是我的密码;按下按钮时播放音频文件: AudioFormat audioformat = null; DataLine.Info

我发现这个问题的答案都不起作用,所以我不得不问: 我正在使用Eclipse,我有一个程序,我将其导出为可运行的jar,它会播放音频,但音频必须与导出的jar文件位于同一文件夹中,否则它不会播放。如何将其打包到可运行的jar中,使其不需要音频就可以在那里? PS:我用老式的方式做事,所以不使用构建系统(Maven或Gradle) 这是我的密码;按下按钮时播放音频文件:

    AudioFormat audioformat = null;
                DataLine.Info info = new DataLine.Info(Clip.class, audioformat);
                try {
                    Clip audioclip = (Clip) AudioSystem.getLine(info);
                    File audio1 = new File("audiofile.wav");
                    
                    AudioInputStream audiostream = AudioSystem.getAudioInputStream(audio1); 
                    
                    audioformat = audiostream.getFormat();
                    audioclip.open(audiostream);
                    audioclip.start();
                    audiostream.close();
                } catch (LineUnavailableException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (UnsupportedAudioFileException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } 
```

使用
getResourceAsStream

class Example {
    void getAudioData() {
        try (InputStream in = Example.class.getResourceAsStream("file.mp3")) {
            // pass 'in' to your music player of choice.
            // NB: If you can only pass 'File' or 'Path' objects, and not
            // URL or InputStream objects, get another music playing library.
        }
    }

    void alternateForm() {
        musicPlayer.play(Example.class.getResource("file.mp3"));
        // Use this form if your music player takes URLs and not InputStreams.
    }
}
您的罐子最终看起来像这样:

jar tvf Mobbs8app.jar
1234 Wed 19 Jan 20:00 com/foo/mobbs8/Main.class
1234 Wed 19 Jan 20:00 com/foo/mobbs8/Example.class
1234 Wed 19 Jan 20:00 com/foo/mobbs8/file.mp3
其中
Main.class
这是您的主类,包头为“package com.foo.mobbs8;”-
getResourceAsStream
与类文件位于同一个“目录”中,而不管它可能位于何处(在磁盘上、在jar中、从网络加载-无所谓)

Eclipse应该将“src”目录中的任何非java文件视为要逐字包含在任何导出的jar中的文件,尽管您确实应该尽早转移到实际的构建系统


如果要将音频文件放入“根目录”(如中所示,它在jar中显示为
file.mp3
,而不是
com/foo/mobbs8player/file.mp3
)-没问题。改为使用
.getResourceAsStream(“/file.mp3”)
(注意前面的斜杠)。

使用
getResourceAsStream

class Example {
    void getAudioData() {
        try (InputStream in = Example.class.getResourceAsStream("file.mp3")) {
            // pass 'in' to your music player of choice.
            // NB: If you can only pass 'File' or 'Path' objects, and not
            // URL or InputStream objects, get another music playing library.
        }
    }

    void alternateForm() {
        musicPlayer.play(Example.class.getResource("file.mp3"));
        // Use this form if your music player takes URLs and not InputStreams.
    }
}
您的罐子最终看起来像这样:

jar tvf Mobbs8app.jar
1234 Wed 19 Jan 20:00 com/foo/mobbs8/Main.class
1234 Wed 19 Jan 20:00 com/foo/mobbs8/Example.class
1234 Wed 19 Jan 20:00 com/foo/mobbs8/file.mp3
其中
Main.class
这是您的主类,包头为“package com.foo.mobbs8;”-
getResourceAsStream
与类文件位于同一个“目录”中,而不管它可能位于何处(在磁盘上、在jar中、从网络加载-无所谓)

Eclipse应该将“src”目录中的任何非java文件视为要逐字包含在任何导出的jar中的文件,尽管您确实应该尽早转移到实际的构建系统


如果要将音频文件放入“根目录”(如中所示,它在jar中显示为
file.mp3
,而不是
com/foo/mobbs8player/file.mp3
)-没问题。改用
.getResourceAsStream(“/file.mp3”)
(注意前面的斜杠)。

哦,对不起。编辑我的问题。我知道我应该使用一个构建系统,但现在还是用老式的方式。无论如何,我在上面添加了我的代码;当按下按钮时,它会播放音频文件。还有,请原谅,我是个初学者,我在哪里打这个?jar-tvf…?jar-tvf只是命令行上的一个命令,用于显示jar的内容,您不必运行它,我包含它只是为了向您显示jar的外观;如果您的jar不工作,您可以检查它是否是由eclipse这样构建的。如果您不想使用命令行,也可以使用任何可视化zip工具打开jar。AudioSystem也有一个URL参数,所以只需使用:AudioSystem.getAudioInputStream(Mobbs8Player.class.getResource(“file.mp3”);哦,对不起。编辑我的问题。我知道我应该使用一个构建系统,但现在还是用老式的方式。无论如何,我在上面添加了我的代码;当按下按钮时,它会播放音频文件。还有,请原谅,我是个初学者,我在哪里打这个?jar-tvf…?jar-tvf只是命令行上的一个命令,用于显示jar的内容,您不必运行它,我包含它只是为了向您显示jar的外观;如果您的jar不工作,您可以检查它是否是由eclipse这样构建的。如果您不想使用命令行,也可以使用任何可视化zip工具打开jar。AudioSystem也有一个URL参数,所以只需使用:AudioSystem.getAudioInputStream(Mobbs8Player.class.getResource(“file.mp3”);