当前位置: 首页 > 知识库问答 >
问题:

Java可执行文件.jar文件不播放来自外部资源的MP3文件

华欣荣
2023-03-14
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类中,我有一个play按钮和一个action方法,我在其中创建了一个MP3播放器对象。然后将文件路径传递给MP3播放器

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

只要我在Netbeans中运行这个项目,它就会运行良好,音乐也会播放。但是一旦我创建了一个jar文件,它就不播放音乐了。我发现了一些关于类似问题的其他帖子,例如:从Jar内部加载一个带有JLayer的mp3文件

但与它们相反,我不想在JAR中包含MP3文件。它应该从本地文件夹“data”中获取文件。

任何帮助都是非常感谢的。

共有1个答案

蓬野
2023-03-14

Netbeans创建的dirctory如下所示:yourprojectdir/dist/yourproject.jar。库放在yourprojectdir/dist/lib/otherlibrary.jar中。在yourprojectdir中创建data文件夹,即媒体文件将保留在yourprojectdir/data/audio/中。

您所做的,只是创建一个具有任何名称的批处理文件。

@echo off 
START/MAX dist\YourProject.jar

将批处理文件放置在yourprojectdir中。现在运行批处理文件

 类似资料:
  • 我正在创建一个带有背景音乐的应用程序。我试着在课堂上演奏那首音乐: 我试过了: 当我把它放在我的文件的根目录中并使用它时: 我得到这个错误:javax.sound.sampled。不受支持的AudioFileException:无法从输入URL获取音频输入流更新我尝试使用JavaFX: 但是我得到了错误: 此行中的错误:MediaPlayer Player=new MediaPlayer(媒体);

  • 问题内容: 我想使用jar文件中的java代码播放.wav文件作为资源。我的代码看起来像这样- 我的jar文件之一中存在WindowsNavigationStart.wav文件。但是得到以下异常- 请给我一个解决方案。谢谢你们。 问题答案: 更改: 至:

  • 我遵循了本教程:http://what-when-how.com/javafx-2/playing-audio-using-the-media-classes-javafx-2-part-1/ 我有相应的资源文件夹在相应的目录中。类文件,但我仍然不能播放音频。mp3文件与教程中的不同,但我也有一个. wav等效文件,发现JavaFX可以开箱播放*. wav文件,但不能播放mp3文件。怎么回事啊?

  • 标记为“good”的文件可以正确播放,而标记为“bad”的文件则不能。两个文件在同一个目录中;两个文件都使用音乐播放器播放;并且这两个文件都可以在Windows7机器上使用Python3.4和pygame。

  • 我需要创建一个应用程序,使用各种参数,如高度,体积或基础面积排序各种类型的多边形。将通过命令行传递具有多边形参数、排序类型参数、排序方法参数的文件名的参数。该文件位于项目中的“我的资源”文件夹中的“我的src”文件夹之外。我已经实现了所有的程序,当我通过eclipse运行配置使用pass参数运行时,它工作得很好。但是当我尝试使用cmd相同的参数运行我的.jar文件时,它给出了。 我使用打开了我的j