使用javafx获取mp3文件

Kas*_*rah 8 java eclipse javafx pathname

我今天花了好几个小时来查看如何在日食中获得某种形式的音频,并且在每一步都遇到了麻烦.目前我有一些应该工作,但我收到一个错误:

线程"main"中的异常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();
}}
Run Code Online (Sandbox Code Playgroud)

我也尝试了许多不同的路径名,以防它没有运气错误,我也试着通过转到属性ex:/b/src/hero.mp3来复制并粘贴我在eclipse中获得的路径名.我将不胜感激,让我摆脱这场噩梦.

Mad*_*mer 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);
    }

}
Run Code Online (Sandbox Code Playgroud)

现在,除非我将其包装在上下文中,否则我无法让它工作Application......