繁体   English   中英

如何从jar文件中的mp3获取类路径

[英]how to get classpath from mp3 within a jar file

我在jar文件中的类路径有问题。 带图片
getClass().getResource("picture.png")工作正常。 但是我需要获取一个mp3文件。
如果我将整个路径放在jar文件之外,则可以正常工作,但是如果尝试
没有像getClass().getResource("picture.png")这样的完整路径,它会显示“找不到文件”。 因此,我正在寻找song.mp3路径的解决方案,以便如果我构建.jar并将其在另一台计算机上打开,则歌曲仍会播放。

这是我的代码:

package bgmusic;

import java.io.*;

import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.PlugInManager;
import javax.media.format.AudioFormat;

public class Bgmusic {
    public static void main(String[] args) {
        Format input1 = new AudioFormat(AudioFormat.MPEGLAYER3);
        Format input2 = new AudioFormat(AudioFormat.MPEG);
        Format output = new AudioFormat(AudioFormat.LINEAR);
        PlugInManager.addPlugIn(
            "com.sun.media.codec.audio.mp3.JavaDecoder",
            new Format[]{input1, input2},
            new Format[]{output},
            PlugInManager.CODEC
        );
        try{
            Player player = Manager.createPlayer(new MediaLocator(new File("song.mp3").toURI().toURL()));
            player.start();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

如果文件在jar中,则不能使用new File("song.mp3"); 该文件希望它位于您的常规os路径内,而不是。

要从jar中获取文件,您需要使用getResource

例如,假设song.mp3在jar文件的根目录中,而不在目录中:

URL url = this.getClass().getResource("song.mp3"); 

从静态方法中,您应该可以按以下方式获取它

URL url = BgMusic.class.getResource("song.mp3"); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM