簡體   English   中英

Java可執行.jar文件不從外部資源播放MP3文件

[英]Java executable .jar file does not play MP3 file from external resource

我在Netbeans中有一個包含用戶界面的Java項目。 用戶可以從界面播放存儲在項目工作目錄中的“數據”文件夾中的MP3文件。 為了播放文件,我有一個創建MP3播放器並使用JLayer.jar的類。

import java.awt.Component;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.swing.JFileChooser;
import javazoom.jl.player.Player;


public class MP3Player {


private String filename;
private Player player; 

// a default constructor
public MP3Player() {}

// Constructor takes a given file name 
public MP3Player(String filename) {
    this.filename = filename;
}

public void close() { if (player != null) player.close(); }

// play the JLayerMP3 file to the sound card
public void play() {
    try {
        InputStream fis     = new FileInputStream(filename);
        BufferedInputStream bis = new BufferedInputStream(fis);
        player = new Player(bis);
    }
    catch (Exception e) {
        System.out.println("\n Problem in playing: " + filename);
        System.out.println(e);
    }
}

public void play(String mp3filename) {
    try {
        InputStream fis     = new FileInputStream(mp3filename);
        BufferedInputStream bis = new BufferedInputStream(fis);
        player = new Player(bis);
    }
    catch (Exception e) {
        System.out.println("Problem in playing: " + mp3filename);
        System.out.println(e);
    }

    // creata a thread to play music in background
    new Thread() {
        public void run() {
            try { player.play(); }
            catch (Exception e) { System.out.println(e); }
        }
    }.start();
}

在UI類中,我有一個帶有動作方法的播放按鈕,我在其中創建一個MP3播放器對象。 然后我將文件路徑傳遞給MP3播放器

MP3Player mp3 = new MP3Player();  
mp3.play("data/audio/" + filepath);

只要我在Netbeans中運行這個項目,它就能正常工作並播放音樂。 但是一旦我創建了一個jar文件就不會播放音樂了。 我發現了一些關於類似問題的其他帖子例如: 從Jar內部加載帶有JLayer的mp3文件

但與他們相反,我不想在JAR中包含MP3文件。 它應該從本地文件夾“data”獲取文件。

我將包含mp3.files的“data”文件夾放在與jar文件相同的目錄中。 因此,文件路徑與我在Netbeans項目的工作目錄中使用它時完全相同,並從Netbeans運行它(因為我說沒有問題)。 並且JAR從本地“data”文件夾中獲取所有其他數據,如文本文件和圖像,而沒有任何問題。

任何幫助都非常感謝。

Netbeans創建了這樣的dirctory: YourProjectDir/dist/YourProject.jar 您的庫放在YourProjectDir/dist/lib/otherlibrary.jar YourProjectDir創建data文件夾,即您的媒體文件將保留在YourProjectDir/data/audio/

你做什么,只需創建一個任何名稱的批處理文件。

@echo off 
START/MAX dist\YourProject.jar

將批處理文件放在YourProjectDir 現在運行批處理文件。

暫無
暫無

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

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