0

次のコードは、Eclipse 内から実行するとうまく機能します。しかし、それを .jar ファイルにエクスポートして jar ファイルから実行しようとすると、音声が 0.5 秒間再生され、約 3 秒間再生されます。サウンド ファイルは jar 内にありません。System.getProperties("user.home") + PathToAudioFile; を使用してパスを取得します。これが私の現在のコードセグメントです:

public void postFloorLoc(String FloorLoc)
{   String audiopath = System.getProperty("user.home") + "/BortechData/audio/";

    txtFloorLocation.setText(FloorLoc);
    //choosing which file to play
    if(FloorLoc.contentEquals("1-FIFO"))
        audiopath = audiopath + "1-fifo.wav";
    if(FloorLoc.contentEquals("10-FIFO"))
        audiopath = audiopath + "10-fifo.wav";
    aufile = new File(audiopath);
    if(FloorLoc.contentEquals("1-FIFO") || FloorLoc.contentEquals("10-FIFO"))
    {   Thread t = new Thread(new Runnable(){

        @Override
        public void run() {
            try {
                Line.Info linfo = new Line.Info(Clip.class);
                Line line = AudioSystem.getLine(linfo);
                Clip auClip = (Clip)line;
                AudioInputStream ais = AudioSystem.getAudioInputStream(aufile);
                auClip.open(ais);
                auClip.setFramePosition(0);
                auClip.start();
            }
            catch(UnsupportedAudioFileException uae)
            { JOptionPane.showMessageDialog(null, uae); }
            catch(IOException ioe)
            { System.out.println(ioe); }
            catch(LineUnavailableException lua)
            { System.out.println(lua); }

            }

        }); 
        t.start();

    }
}

他のすべてのヘルプ要求は、ほぼ同じです。繰り返しますが、これはEclipse内でうまく機能しますが、jarとして、約3秒のうち0.5秒のオーディオしか得られません。そのため、ファイルを見つけて再生を開始しますが、すべてを再生するわけではありません。私は何が欠けていますか???

4

1 に答える 1

0

私の推測では、コマンド ラインからではなく、Eclipse でクリップ全体をバッファリングしていると思われます。メモリ割り当てプールのサイズを増やしてみて (GB の場合は -Xmx1024m)、それ以上の量が再生されるかどうかを確認してください。

于 2013-09-30T16:41:14.953 に答える