2015-12-17 36 views
1

我遇到了有關音頻的問題。音頻無法在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文件中都不起作用。

請問任何人都可以告訴我如何解決這個問題?

感謝,

羅漢

+0

音頻文件是否被捆綁到jar中? (可能是)如果是這樣,請查看'ClassLoader.getResourceAsStream()'而不是使用'FileInputStream'。 –

+0

嗨瘋狂物理學家, 非常感謝!將FileInputStream更改爲getSystemResourceAsStream()工作! :) 你知道爲什麼FileInput Stream不工作嗎? –

+0

是的。一旦您的項目在jar中,音頻文件不再是文件系統上的文件,而是作爲jar的zip文件的一部分。 FileInputStream僅適用於可以直接打開的獨立文件。 –

回答

-1

我認爲這將是您更輕鬆地創建在Netbeans的Java程序的設置和它仍然能夠在沒有Netbeans的運行。

您可以使用名爲excelsior jet的軟件進行此操作。

所有你需要做的是在YouTube上觀看短短的5分鐘視頻介紹如何使用這一點,你有你自己的設置,您可以在您的計算機和其他計算機上安裝。

而且你使用的軟件使安裝程序之前,這將是很好的爲你檢查你的程序是否實際運行正常的jar文件。

這樣做只是去到你保存你的Netbeans項目,單擊該項目爲您的程序,然後進入「DIST」文件夾(這是項目中的JAR文件的存儲位置)。點擊jar文件檢查項目是否運行正常。

如果你沒有找到在dist文件夾中的jar文件那麼它極有可能是因爲你和你的「MANIFEST.MF」文件或在你的Java項目中的「的build.xml」文件篡改。

+0

這並不能解釋OP的情況。儘管您的解決方法可能有效,但解釋爲什麼有必要這樣做很好。 –