1

オーディオ クリップを再生するには、次の方法があります。

public static synchronized void playSound(final String path) {
      new Thread(new Runnable() {
      // The wrapper thread is unnecessary, unless it blocks on the
      // Clip finishing; see comments.
        public void run() {
            try {
                Clip clip = AudioSystem.getClip();
                AudioInputStream inputStream = AudioSystem.getAudioInputStream(
                        this.getClass().getClassLoader().getResourceAsStream(path));
                clip.open(inputStream);
                clip.loop(Clip.LOOP_CONTINUOUSLY);
                while (runThread) {
                    Thread.sleep(5000);
                }
                clip.stop();
            }
            catch (Exception e) {
                System.err.println("Audio clip error: "+e.getMessage());
                e.printStackTrace();
            }
        } 
      }).start();
    }

これを Windows 7 デスクトップ プラットフォーム (Lenovo) で実行すると、期待どおりに動作します。ただし、Windows 7 ラップトップ (Acer) で実行すると、次の例外が発生します。

java.lang.NullPointerException
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at StokerMonitor.Alerts$1.run(Alerts.java:62)
at java.lang.Thread.run(Unknown Source)

62 行目は「AudioInputStream」ステートメントです。2 つのプラットフォームの違いはわかりませんが、ラップトップに欠けている Windows 7 の依存関係があるに違いないと推測しています。誰か提案はありますか?ティア。

4

1 に答える 1

0

どういうわけか、リソース ディレクトリが Eclipse のビルド パスから削除されたことが判明しました。ご迷惑をおかけして申し訳ありません。

于 2016-07-01T15:36:40.710 に答える