3

jar ファイルとしてエクスポートしたいプロジェクトがあります。ソフトウェアは、特定の時点でサウンドを再生することになっています。ただし、問題は、その時点に到達したときに JAR ファイルがサウンド ファイルを再生しないことです。Eclipse IDE から同じプロジェクトを実行すると、実行されます。

サウンド再生機能をセットアップする方法を示すコードは次のとおりです。

public void setupSoundPlayback(){
        try{
            buzzer = AudioSystem.getClip();

            in = AudioSystem.getAudioInputStream(BatteryBeeper.class.
                    getResourceAsStream("/sound/boing_x.wav"));

            buzzer.open(in);
        }catch(Exception e){
            e.printStackTrace();
        }

    }  

その後、オブジェクトのplay()メソッドを呼び出しClipます。埋め込みサウンドを再生するメソッドを使用していますgetResourceAsStream()が、JAR ではサウンドが再生されません。



ここに画像の説明を入力

抽出して、サウンド ファイルが適切な場所にあるかどうかを確認するように言われたので、実行しました。これが私が得たものです。サウンドフォルダはルートにあります。そして、boing3_x.wavサウンドフォルダーにあります(写真にはありません)。

4

3 に答える 3

3

call を使用してgetResourceAsStream("/sound/boing_x.wav");いるため、.wav ファイルが JAR の正しい場所に含まれていることを確認する必要があります。

パスの先頭に「/」があるため、絶対パスを使用して、指定したパスの JAR 内に .wav ファイルを配置する必要があります(つまり、サウンド ディレクトリは JAR のルートに配置する必要があります。また、boing_x.wav はサウンド ディレクトリに配置する必要があります)。

JAR ファイルを特定のディレクトリに解凍し、JAR を解凍したときに/sound/boing_x.wav.

于 2013-01-18T18:53:01.537 に答える
2

これは、リソース (この場合は .wav ファイル) がビルドされた .jar ファイル内に埋め込まれていないか、間違った場所に埋め込まれている場合に発生します。

また、「/sound/ boing_x.wav 」を再生しようとしていることに注意してください。ただし、jar の /sound にはboing 3 _x.wavがあるため、ファイル名には余分な3が含まれていることに注意してください。

于 2013-01-18T18:35:30.877 に答える
1

これは、jar 内のループ サウンド ファイルを再生するための私の関数です。私にとっては問題なく動作します。

getResourceAsStream()jar では動作しないようです。ただし、getResource()そうです。

public synchronized void alarm() {
    try {
        crit = AudioSystem.getClip();
        AudioInputStream inputStream1 = AudioSystem.getAudioInputStream(this.getClass().getResource("critical.wav"));
        crit.open(inputStream1);
        crit.loop(Clip.LOOP_CONTINUOUSLY);

    } catch (Exception e) {
        System.err.println(e.getMessage());
        }
}
于 2013-03-09T14:03:57.667 に答える