簡體   English   中英

如何播放 Jar 文件中資源文件夾中的 MP3 文件?

[英]How to play MP3 files that are in the resources folder in a Jar file?

我正在嘗試訪問位於 jar 文件中資源文件夾內的 MP3 文件。 我遇到了一些問題,無法讀取。

import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Logger;

import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerException;

public class MP3 {

    private static final Logger logger = Logger.getLogger(Main.class.getName());


    private BasicPlayer player;


    /**
     * Constructor
     */
    public MP3() {
        player = new BasicPlayer();
    }

    public void changeSong(song) {

        // Change song now
        String pathToMp3 = System.getProperty("user.dir") + this.getClass().getResource(song);
        try {
            player.open(new URL("file:///" + pathToMp3));
            player.play();
            logger.info("Playing the song: " + song);
        } catch (MalformedURLException | BasicPlayerException e) {
            logger.info("Could not turn on MP3 music from: " + pathToMp3);
        }

    }

}

pathToMp3 看起來像這樣: 在此處輸入圖片說明

我已經解決了 CSV 讀取的類似問題。 而不是從資源中讀取。 我將資源作為流讀取。

InputStream in = getClass().getResourceAsStream("/file.txt"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(in));

但這里的問題是

layer.open(new URL("file:///" + pathToMp3));

采用參數 URL,而不是流或字符串。 您知道如何從可執行 JAR 文件內的資源文件夾中流式傳輸 MP3:s 嗎?

更新:

       // Change song now
        String pathToMp3 = getClass().getResource(song).toString();
        InputStream in = getClass().getResourceAsStream(song);
        try {
            player.open(in);
            player.play();
            logger.info("Playing the song: " + song);
        } catch (BasicPlayerException e) {
            logger.info("Could not turn on MP3 music from: " + pathToMp3);
        }

給出錯誤:

在此處輸入圖片說明

我從這里復制了BasicPlayerTest示例並修改了 play 方法以獲取URL

然后從項目中運行主要作品,並在 jar 中導出后運行。

請注意,我復制了 src 文件夾中的resources文件夾。

public static void main(String[] args) {
    BasicPlayerTest test = new BasicPlayerTest();
    test.play(test.getClass().getResource("/resources/test.mp3")); 
}

我在日志中看到的網址是:
jar:file:/C:/Temp/mp3.jar!/resources/test.mp3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM