10

私は今日、日食で何らかの形のオーディオを取得する方法を探すのに何時間も費やしましたが、あらゆる段階で問題がありました. 現在、動作するはずのものがありますが、エラーが発生します:

スレッド「メイン」での例外 java.lang.IllegalArgumentException: com.sun.javafx.css.parser.Css2Bin.main(Css2Bin.java:44) で引数としてファイル名が必要です

私は基本的に、これを機能させた人からコピーしました。FX lib はあるべき場所に追加されていると言いたいです。これは空想的ではないことはわかっていますが、基本を試しただけです。

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();
}}

また、運が悪かった場合に備えて、さまざまなパス名を試しました。また、/b/src/hero.mp3 などのプロパティに移動して、Eclipse で取得したパス名をコピーして貼り付けようとしました。この悪夢から抜け出すために助けていただければ幸いです。

4

7 に答える 7

3

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();
   }  
 }
于 2014-06-22T16:48:17.610 に答える
2

ファイルが にある場合、resources/musicこれは機能し、アプリケーションは移植可能になります.mp3 inside the .jar

Media media = null;
try {
  media = new Media(getClass().getResource("/music/hero.mp3").toURI().toString());
} catch (URISyntaxException e) {
  e.printStackTrace();
} 

ここに画像の説明を入力

于 2016-12-22T21:35:24.143 に答える
1

埋め込みリソースの参照に問題があると思われます。埋め込みリソースは、アプリケーション コンテキスト内に含まれる任意のファイルです (つまり、この場合、アプリケーション 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コンテキストにラップするまで動作させることができませんでした...

于 2014-06-22T03:09:28.220 に答える