Java 声音将在eclipse中播放,但不会在导出的jar文件中播放

Java 声音将在eclipse中播放,但不会在导出的jar文件中播放,java,audio,jar,clip,Java,Audio,Jar,Clip,运行JAR时不会播放声音,但在eclipse中运行时会播放声音 这里是我加载剪辑的地方:(文件从jar目录加载,而不是从jar内部加载) public void init(){ System.out.println(“抓取音乐”); 字符串currentDir=新文件(“”).getAbsolutePath(); name=新文件(currentDir+“\\music\\”).list(); 剪辑=新剪辑[名称.长度]; soundFile=新文件[name.length]; 对于(int x

运行JAR时不会播放声音,但在eclipse中运行时会播放声音

这里是我加载剪辑的地方:(文件从jar目录加载,而不是从jar内部加载)

public void init(){
System.out.println(“抓取音乐”);
字符串currentDir=新文件(“”).getAbsolutePath();
name=新文件(currentDir+“\\music\\”).list();
剪辑=新剪辑[名称.长度];
soundFile=新文件[name.length];

对于(int x=0;x您的声音没有播放的原因是,它很可能没有被编译到您的可运行jar中,因此无法找到。将其编译到可运行jar中的最佳方法是在eclipse中创建一个源文件夹,然后将您的声音文件添加到其中。然后它将被编译到您的jar中。我也在为此而挣扎l、 你需要使用

getClass().getSystemResource(“pathToResourceFromClass”)

例如,如果项目结构如下所示:

-项目名称

-----src

----------SomeClass.java

-----图像

----------SomeImage.png

然后从SomeClass.java,您将使用

getClass().getSystemResource("images/SomeImage.png")
获取引用该文件的
URL
对象。然后,如果需要,可以将该
URL
对象传递给
ImageIcon
的构造函数

请注意,
getClass().getResource()
不适用于jar文件中的图像或声音文件!!!我已经花了很多时间在这方面,而
getResource()
不起作用。您必须使用
getSystemResource(…)
来获取jar文件中的资源


让我知道如果你对此有任何疑问。我会很乐意澄清任何混淆点。

明显的问题:jar是否包含声音文件?看起来文件是从文件系统加载的,基于JAR文件的当前执行上下文。这两条路径可能不相同。考虑使用嵌入式RESO。由于未引发fileNotFound异常,urces INSTADIT可以确定找到该文件。请尝试使用WINRAR打开可运行的jar,看看它是否在其中。文件是从jar外部加载的,而不是从内部加载的。
getClass().getSystemResource("images/SomeImage.png")