私は今日、Eclipseで何らかの形式のオーディオを取得する方法を探すのに何時間も費やし、その過程のあらゆる段階で問題を抱えてきました。現在、動作するはずの何かがありますが、エラーが発生します:
スレッド「main」の例外Java.lang.IllegalArgumentException:com.Sun.javafx.css.parser.Css2Bin.main(Css2Bin.Java:44)の引数としてファイル名が必要です
私は基本的にそれを動かしていた誰かからこれをコピーしました。 FXlibが本来あるべき場所に追加されていると言いたいです。私はこれが派手ではないことを知っていますが、私はただ基本を試していました。
package b;
import Java.io.File;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
public class test {
public static void main(String[] args){
String uriString = new File("C:\\Users\\Mike\\workspace\\b\\src\\hero.mp3").toURI().toString()
MediaPlayer player = new MediaPlayer( new Media(uriString));
player.play();
}}
また、運が悪かった場合に備えて、さまざまなパス名を試しました。また、Eclipseで取得したパス名をコピーして、プロパティex:/b/src/hero.mp3に移動して貼り付けようとしました。この悪夢から抜け出すために助けていただければ幸いです。
ワークスペースの外部にあるファイルは、file://
プレフィックスを付けて含める必要があります。機能を示す簡単な例は次のとおりです。
public class Reproductor extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Media media = new Media("file:///Movies/test.mp3"); //replace /Movies/test.mp3 with your file
MediaPlayer player = new MediaPlayer(media);
player.play();
}
}
埋め込みリソースの参照に問題があると思われます。埋め込みリソースは、アプリケーションコンテキスト内に含まれる(つまり、この場合、アプリケーションJar内に格納される)ファイルです。
これらのリソースへの参照を取得するには、Class#getResource
を使用する必要があります。これはURL
を返し、要件に応じてリソースをロードするために使用できます。
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
String path = Test.class.getResource("/Kalimba.mp3").toString();
Media media = new Media(path);
MediaPlayer mp = new MediaPlayer(media);
mp.play();
System.out.println("Playing...");
}
public static void main(String[] args) {
launch(args);
}
}
さて、Application
コンテキストにラップするまで、それを機能させることができませんでした...
JavaFXは、NetBeansを使用してMP3をjar(jar内)に埋め込みました
最初のJavaFXパッケージをNetBeansでプログラミングした後、jarに埋め込まれたmp3音楽ファイルであるサウンドをjar内に追加して、jarを友人に電子メールで送信し、音楽を友人のコンピューターで再生できるようにしました。 。 StackOverflowにご協力いただきありがとうございます。特に「音楽ファイルをJARに入れる、getResourceAsStream()は使用したいAPIです」と言ったメンバーに感謝します。私はgetResource()を使用することになりましたが、彼は私を正しい方向に導いてくれました。できます。
ステップ1:まず、NetBeansで実行を押したときに再生する音楽を取得しました。
ステップ2:音楽をループ(リピート)したかった。 StackOverflowのメンバーのおかげで、最終的にはそれが正しくなりました。私のソースコードを見てください。
ステップ3:最後にmp3をjarファイルにEMBEDしました。さて、これは重要です。最初は私のコンピューターで音楽が再生されましたが、jarファイルがハードディスクからそれを読み取りました。 mp3の名前を変更すると、jarがクラッシュし、実行されず、mp3が見つかりませんでした。 mp3をjarに埋め込み、jar内(jar内)に配置する必要がありました。そうしないと、他の人のコンピューターで再生されません。ここでgetResource()がトリックを行いました。
ステップ4:それから私は私の瓶を友人に電子メールで送りました。一部のサービスプロバイダーはjarを信頼せず、メールを未配信で私に送り返しました。他のサービスプロバイダーは問題なくメールを配信しました。それで、私は何をしましたか? * .jarの名前を* .mp4に変更すると、メールが配信されたので、友達に* .mp4から* .jarに戻すように依頼しました。出来た。
これが私のソースコードです。完璧ではないと思いますが、StackOverflowのおかげで機能します。
/* Of course, one needs to import the following gizmo’s (and others): */
import javafx.util.Duration;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
/* I want to EMBED the music inside the jar (in the jar).
The secret seems to be getResource. The source code starts here,
to EMBED the sound (DollyParton.mp3) into the jar: */
//************************ begin the music ***********************
@Override public void start(Stage primaryStage) throws Exception {
init(primaryStage);
primaryStage.show();
play();
}
public static void main(String[] args) {
launch(args);
}
MediaPlayer musicplayer; {
/* Put your music file IN THE JAR, "getResourceAsStream()" is
the API you want to use. Put the DollyParton.mp3 into the Windows
folder src/rockymountain. NetBeans automatically copies the mp3
to the folder build/classes/rockymountain. */
Media mp3MusicFile = new Media(getClass().getResource("DollyParton.mp3").toExternalForm());
musicplayer = new MediaPlayer(mp3MusicFile);
musicplayer.setAutoPlay(true);
musicplayer.setVolume(0.9); // from 0 to 1
//***************** loop (repeat) the music ******************
musicplayer.setOnEndOfMedia(new Runnable() {
public void run() {
musicplayer.seek(Duration.ZERO);
}
});
//*************** end of loop (repeat) the music **************
}
//**************************** end of music *************************
Mp3をWindowsフォルダーsrc/rockymountainに入れました。次に、NetBeansはmp3をbuild/classes/rockymountainフォルダに自動的にコピーしました。 NetBeansは、誰かがそう言ったので、私が不必要に作成したファイルであるフォルダ/ resourcesにmp3をコピーしません。/resourcesフォルダーは必要ありません。空のままです。
次のようにNetBeansを使用してJava ARchive(jar)ファイルを作成します。
プロジェクト名を右クリックします
プロパティを選択します
[パッケージ]をクリックします
コンパイル後にビルドJARを確認します
JARファイルの圧縮を確認してください
[OK]をクリックして変更を受け入れます
プロジェクト名を右クリックします
Clean andBuildを選択します
JARファイルが作成されます。 NetBeans内で表示するには:
[ファイル]タブをクリックします
ProjectName >> dist(distribution)を展開します。 jarファイルはdistフォルダー内にあります。