2016-04-08 9 views
0

私はJavaFxの音楽ファイル再生方法を使用していますが、動作していません(再生していないサウンド)。私は問題が私のファイルの場所にあると感じています。私はそれを単純な文字列で参照するために、私のJavaプロジェクトフォルダに.mp3をどこに置くのですか?あるいはそれを参照する別の方法がありますか? JavaFX MediaはStringパラメータを受け取ります。ファイル(.mp3)はどこに置かれますか?

String test = "test.mp3"; 
Media x = new Media(test); 
MediaPlayer mediaPlayer = new MediaPlayer(x); 
mediaPlayer.play(); 
+0

ファイルと一緒にファイルパスを渡してみましたか? "C:/ Users/You/Documents/Java Projects/Project 1/test.mp3"のように – wbrugato

+0

はい、違法な文字に言及するとエラーが出ました。私は参照したライブラリに追加したリソースフォルダを持っていますが、プログラムが実行されているハードドライブにかかわらずそこにあるファイルを参照できますが、この場合は動作しません。 –

答えて

0

あなたがMediaのJavadocを読んだことがある場合、あなたはあなたが使用しているコンストラクタにHTTP、ファイルまたはjar URIを与えなければならないことを知っています。
実際にソースコードを見ると、IllegalArgumentExceptionが得られないのでしょうか?

ただし、Mediaコンストラクタに渡す文字列を取得するには、Class.getResource(...).toURI().toString()を使用します。
これを呼び出すClassオブジェクトと、getResource()メソッドに与えるものの組み合わせは、ファイルのレイアウト方法によって異なります。
あなたのクラス以外のファイルがある場合は、getClass().getResource("file.name")が動作するはずです。
ファイルがクラスパスのルートにある場合は、getClass().getResource("/file.name")を実行する必要があります。

もちろん、他の有効なhttp、file、またはjar URIをコンストラクタに与えることもできます。

+0

Heres my full method public static void playSong() ストリングテスト= getClass()。getResource( "test2.mp3")。toURI()。toString(); メディアx =新しいメディア(テスト)。 MediaPlayer mediaPlayer =新しいMediaPlayer(x); mediaPlayer.play(); } getClass()の下では、Object型から非静的メソッドgetClass()への静的参照を作成できません。私はSound2クラス(このメソッドを含むクラス)と同じパッケージにtest2.mp3ファイルを置きます。この奇妙なコメントをごめんね。私はこのウェブサイトを初めて利用しています –

+0

静的コンテキストの場合は、代わりに 'getClass()'を使用せず、代わりに 'YourClassName.class'を使用してください。 – Vampire

+0

助けてくれてありがとう、それは働いた。これを見て、Toolkitの問題が初期化されていない場合は、次を参照してください:http://tech.chitgoks.com/2013/05/11/how-to-fix-toolkit-not-initialized-error-in- java-fx /#comment-9240 5秒後にMediaPlayerのミュートに問題がある方は、次のURLを参照してください。http://stackoverflow.com/questions/6241687/mediaplayer-stop-playing-after-about-5-秒 –