我遇到了有關音頻的問題。音頻無法在JAR文件中播放
我在Java中使用NetBeans編碼,我想導出我的項目,所以它不需要Netbeans的運行,所以我決定創建一個JAR文件。我將我的程序的所有圖像和音頻文件(aiff)放在src文件夾中,以便可以從編碼控制檯外部訪問它們。
我宣佈我的InputStream和語音串流爲全局變量,和我使用他們try catch塊,其中一個按鈕被按下時運行代碼內。
AudioPlayer.player.stop(audios);
try{
in = new FileInputStream (new File("src/glory.aiff"));
System.out.println("Button Clicked");
audios = new AudioStream (in);
AudioPlayer.player.start(audios);
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, e);
}
此代碼完全正常,當我運行的NetBeans程序,但是當我創建一個JAR文件,音頻不玩了,和一個錯誤彈出說,該文件無法找到。我在我的電腦和其他電腦上試過這個,並且出現了同樣的問題。
我覺得奇怪的是,我前面提到的圖片都在同一個SRC文件夾中,並且它們顯示正確。我通過使用圖標鏈接了這些圖片,Netbeans自動爲其生成代碼。
jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/IMG_2138.JPG")));
我已經做了我自己的研究,但是誰都有這個問題其他人似乎沒有使用相同的語音串流我自己,我不知道如何去適應它來解決我的問題!我也嘗試過改變音頻的文件路徑,但是每當它在Netbeans中工作時,它在我的JAR文件中都不起作用。
請問任何人都可以告訴我如何解決這個問題?
感謝,
羅漢
音頻文件是否被捆綁到jar中? (可能是)如果是這樣,請查看'ClassLoader.getResourceAsStream()'而不是使用'FileInputStream'。 –
嗨瘋狂物理學家, 非常感謝!將FileInputStream更改爲getSystemResourceAsStream()工作! :) 你知道爲什麼FileInput Stream不工作嗎? –
是的。一旦您的項目在jar中,音頻文件不再是文件系統上的文件,而是作爲jar的zip文件的一部分。 FileInputStream僅適用於可以直接打開的獨立文件。 –