Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 音乐赢得';不能在.jar文件中播放_Java - Fatal编程技术网

Java 音乐赢得';不能在.jar文件中播放

Java 音乐赢得';不能在.jar文件中播放,java,Java,我在这里查阅了很多关于这个问题的话题,但其中任何一个都不能解决我的问题。 我有这个方法 String filepath = "resources/pacmanMusic.wav"; URL musicLocation = getClass().getResource(filepath); //String musicPath = filepath.toString(); public void playMusic(String musicLocation) { if

我在这里查阅了很多关于这个问题的话题,但其中任何一个都不能解决我的问题。 我有这个方法

String filepath = "resources/pacmanMusic.wav";
URL musicLocation = getClass().getResource(filepath);
//String musicPath = filepath.toString();

public void playMusic(String musicLocation) {
    if (play) {
        
        try {
            
            AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(musicLocation));
            File musicPath = new File(musicLocation);
            inputStream = AudioSystem.getAudioInputStream(musicPath);
            clip = AudioSystem.getClip();
            System.out.println(musicLocation);
            clip.open(inputStream);
            clip.loop(Clip.LOOP_CONTINUOUSLY);
            clip.start();
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }else {
        clip.stop();
    }
    System.out.println(play);
}
但我不知道,如果音乐在eclipse中播放,为什么它不能在.jar中播放。从其他的“主题”中,我总是会遇到一些错误,比如文件为空或类似的错误。 这就是我如何调用上面的方法
playMusic(filepath)
我做错了什么?谢谢

试试这个:

InputStream文件InputStream=YourAwesomeClass.class.getResourceAsStream(“yourFile.mp3”);
AudioInputStream AudioInputStream=AudioSystem.getAudioInputStream(fileInputStream);

据我所知,您的
.mp3
应该保存在resources文件夹中。创建jar时,文件路径被转换为“jar路径”,处理得不太好。这就是为什么使用
InputStream
是个好主意。

运行代码时是否出现异常?不,一切正常如果不想从磁盘运行mp3,则应指定该文件的绝对路径。目前,您只能播放jar文件的
resources/
文件夹中的文件