0

JAR を実行するとサウンドが再生されませんが、Eclipse で実行すると再生されます。

クリップをロードする場所は次のとおりです。

public void init(){
    System.out.println("grabbing Music");
    String currentDir = new File("").getAbsolutePath();
    name=new File(currentDir+"\\music\\").list();
    clip=new Clip[name.length];
    soundFile=new File[name.length];
    for(int x=0;x<name.length;x++){
        System.out.println(currentDir+"\\music\\"+name[x]);
        try {
            soundFile[x]= new File(currentDir+"\\music\\"+name[x]);
            AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile[x]);
            DataLine.Info info= new DataLine.Info(Clip.class, sound.getFormat());
            clip[x] = (Clip) AudioSystem.getLine(info);
            clip[x].open(sound);
            clip[x].addLineListener(new LineListener(){
                public void update(LineEvent event) {
                    if (event.getType() == LineEvent.Type.STOP) {
                        event.getLine().close();
                    }
                }
            });
        } catch (LineUnavailableException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (UnsupportedAudioFileException e) {
            e.printStackTrace();
        }
    }

}

Eclipse で実行してもエラーは発生しません。無効なディレクトリ エラーの可能性はないはずですが、何が問題なのですか?

-jar を CMD で実行すると、エラーは発生しません。

編集:オーディオを間違ってロードしているように感じます。そのため、ファイルをロードするために使用したコードを貼り付けたのです。私の検索では、ファイルを使用してサウンドファイルをロードする人を見たことがありません。それが問題なのだろうか?

4

4 に答える 4

1

どうだ-

  1. Eclipse でプロジェクトを右クリックします。次に、新規 -> ソースフォルダー。
  2. ソース フォルダーに任意の名前を付けます。例えば ​​music_src.
  3. music_src の音楽ディレクトリ全体をコピーまたはドラッグします。次に瓶を作ります。
于 2013-07-31T19:29:38.523 に答える
1

現在のコードを実行するにはmusic、フォルダーは jar ファイルがあるフォルダーと同じフォルダーにある必要があります。

別の解決策は、musicフォルダーを jar ファイル内にパッケージ化し、コードを次のように変更することです。

InputStream is = getClass().getResourceAsStream("/music/" + name[x]);
AudioInputStream sound = AudioSystem.getAudioInputStream(is);
于 2013-07-31T19:22:25.440 に答える
0

ファイル システムは、jar ファイルを調べるのに苦労します。代わりに URL を使用してみてください。URL は、jar 内の場所を特定できます。これは、jar 内のリソースに初めてアクセスしようとする人々によく起こります。それ以外の場合は問題ないように見えます。

于 2013-08-01T21:21:40.683 に答える