[英]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.