[英]sound will play in eclipse but not in exported jar file
運行 JAR 時不會播放聲音,但在 eclipse 中運行時會播放聲音。
這是我加載剪輯的地方:(文件是從 jar 目錄加載的,而不是從 jar 內加載)
public void init(){
System.out.println("grabbing Music");
String currentDir = new File("").getAbsolutePath();
name=new File(currentDir+"\\music\\").list();
clip=new Clip[name.length];
soundFile=new File[name.length];
for(int x=0;x<name.length;x++){
System.out.println(currentDir+"\\music\\"+name[x]);
try {
soundFile[x]= new File(currentDir+"\\music\\"+name[x]);
AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile[x]);
DataLine.Info info= new DataLine.Info(Clip.class, sound.getFormat());
clip[x] = (Clip) AudioSystem.getLine(info);
clip[x].open(sound);
clip[x].addLineListener(new LineListener(){
public void update(LineEvent event) {
if (event.getType() == LineEvent.Type.STOP) {
event.getLine().close();
}
}
});
} catch (LineUnavailableException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
}
}
}
在 Eclipse 中運行它時我沒有收到任何錯誤。 不應該有無效目錄錯誤的可能性,那么有什么問題呢?
- 當 jar 在 CMD 中運行時,我沒有錯誤也沒有堆棧跟蹤,所以它正在加載文件,它只是在調用 clip.start() 時沒有運行它。 所以我加載文件的方式與可運行的 jars 不兼容。
編輯:我覺得我加載的音頻錯誤,因此我粘貼了用於加載文件的代碼。在我的搜索中,我沒有看到任何人使用 File 加載聲音文件。 想知道這是不是問題?
- 也切換到嵌入式資源也不起作用。
您的聲音沒有播放的原因是因為它很可能沒有被編譯到您的可運行 jar 中,因此無法找到。 將其編譯為可運行 jar 的最佳方法是在 eclipse 中創建一個源文件夾,然后在其中添加您的聲音文件。 然后它會被編譯到你的 jar 中
我也為此苦苦掙扎。 你需要使用
getClass().getSystemResource("pathToResourceFromClass")
例如,如果您的項目結構如下所示:
-項目名
-----src
----------SomeClass.java
- - -圖片
----------SomeImage.png
然后從 SomeClass.java,你會使用
getClass().getSystemResource("images/SomeImage.png")
獲取引用該文件的URL
對象。 如果需要,您可以將該URL
對象傳遞給ImageIcon
的構造函數。
請注意getClass().getResource()
不適用於 jar 文件中的圖像或聲音文件!!! 我在這上面花了很多時間,但getResource()
不起作用。 您必須對 jar 文件中的資源使用getSystemResource(..)
。
如果您對此有任何疑問,請告訴我。 我很樂意澄清任何令人困惑的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.