2012-02-15 14 views
1

私はこの件に関して多くのスレッドを見つけましたが、まだ動作しません。これはコンパイラからは簡単に動作しますが、jarファイルからは動作しません。 jarファイルがオーディオファイルを検出したようですが、再生するだけです。jarファイルからオーディオを再生する

import sun.audio.*; 
import java.awt.event.*; 
import java.io.*; 
import javax.swing.*; 

@SuppressWarnings({"serial","restriction"}) 
public class JarSoundTest1 extends JFrame { 
    JButton button; 
    InputStream in; 
    AudioStream as; 

    public JarSoundTest1() throws Exception { 

     JOptionPane.showMessageDialog(null, this.getClass().getResource("blopp.wav"));   

     button = new JButton("Click to Blopp!"); 
     button.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      try{ 
       in = this.getClass().getResourceAsStream("blopp.wav"); 
       as = new AudioStream (in); 
       AudioPlayer.player.start(as); 

       JOptionPane.showMessageDialog(null, "try"); 

      }catch(Exception ex){ 

       ex.printStackTrace(); 
       JOptionPane.showMessageDialog(null, "catch");    
      } 
     }  
     }); 
     add(button);  
    } 

    public static final void main(String[] args) throws Exception { 
     JFrame frame = new JarSoundTest1(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(200, 200); 
     frame.setVisible(true);  
    } 
} 

JOptionPaneのは、私が仮定発見されたファイルを示す、ボタンがクリックされるたびに、「してみてください」と表示さ?まだサウンドは再生されません。 jarファイルの内側と外側の両方に配置されたオーディオファイルを使用しようとしました。このことを理解するのに大いに感謝します。

+0

です。これらの実装で時間の経過とともに正しいことが保証されていないため、Sunのものよりもjavax.sound.sampledを使用するほうがよいでしょう。 – demongolem

答えて

1

私はそれを最終的に得ました。私はそれがあなたと非常に似ているコードで遊ぶためにwavを得ることができるように私はかなりの問題だとは思わない、それは非常に扱いにくいことができるジャーのリソースの問題です。私は上記のコードを編集するには、実験に基づいて次のことを示唆している:のgetClassLoader対

のgetClassを

あなたははgetClassを使用している場合は、パスはスラッシュ、/で始まる必要があります。したがって、.wavがトップレベルにある場合、./blopp.wavは移動方法です。 .wavファイルがsun.audio。*によって認識される場合に必要となるのは、これだけです。

jarでリソースを見つけることはできますが、オーディオが聞こえない場合は、別の.wavファイルを試してみてください。いくつかの良いwavファイルはhere

関連する問題