2017-03-17 10 views
0

私は現在、鳴き声を繰り返し再生する厄介なプログラムを作成していますが、実行するたびにエラーが発生します。私はすべてを試しましたが、ファイルは正しい場所にあります。そこにあるファイルのJava.io.FileNotFoundException

public class PlaySound { 

public static void main(String[] args) throws Exception { 
    while (true) { 
      String path = PlaySound.class.getProtectionDomain().getCodeSource().getLocation().getPath().replaceAll("%20", " ");; 
      InputStream in = new FileInputStream(path + "//src//ding.wav"); 

      AudioStream audioStream = new AudioStream(in); 

      AudioPlayer.player.start(audioStream); 
      TimeUnit.SECONDS.sleep(1); 
     } 
    } 
} 

そして、はい、私は任意の助けをいただければ幸いです//src//ding.wav のようなコードの他のフォーマットを使用している:ここに私の現在のコードです。

編集:私は、ファイルの名前を変更し前にエラーが古いです:また、エラーが

Exception in thread "main" java.io.FileNotFoundException: C:\Users\*** ******\Desktop\ding.jar\src\ding.wav (The system cannot find the path specified) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at net.lookatthis.PlaySound.main(PlaySound.java:19) 

EDIT2です。現在のファイル名を反映するようにエラーを変更しました

+0

System.out.println(path)の出力を提供してください。 – user681574

+0

あなたが探しているファイルは何ですか:hit.wavまたはding.wav? – freedev

答えて

1

ハードディスクドライブの絶対パスを指定してjarファイルのリソースを読み取ろうとしていると思います。

したがって、2つの方法があります。または、ding.jarファイルをディレクトリに解凍します。 または、クラスローダーリソースリーダーを使用してファイルへの相対パスとアクセスを指定します。あなたはおそらく、そのファイル構造を展開するためにあなたのding.jarをunjarしする必要が

InputStream in = PlaySound.class.getResource("/ding.wav").openStream(); 
AudioStream audioStream = new AudioStream(in); 
+0

私のファイル名が壊れてしまったので、私はそれらをより意味をなさせるように変更したからです。エラーは古いです。 – TheGlitch76

+0

うん。スレッド "main"で例外が発生しましたjava.lang.NullPointerException – TheGlitch76

+0

ding.wav – TheGlitch76

0

を使用してhit.wavファイルを見つけることができ、リソースリーダーを使用して

。 FileInputStream(おそらく?)はこのファイルのjarのバージョンにアクセスできません。

関連する問題