2013-05-20 62 views
0

我有一個GUI軟件,也使用內置的Java蘋果API, 問題是,我希望它在Windows和OSX上運行,但在我使用它的功能,像這樣:ClassNotFound異常缺少內置的java api

import com.apple.eawt.Application; 

try{//if osx 

    Application.getApplication().setDockIconImage(
     new ImageIcon(url).getImage()); 
    }catch(Exception e){} 

它仍然拋出ClassNotFoundException的,甚至其上的try/catch 是有沒有解決辦法?

+0

是你的classpath上的jar嗎? – RNJ

+1

如果你正在捕獲Exception,然後什麼都不做,你怎麼能告訴它拋出一個'ClassNotFoundException'? – rgettman

+0

我可以保證你的代碼不會拋出異常。它捕獲並默默處置它。 –

回答

1

您需要確保代碼不會在非Mac系統上運行。例如:

String osType = System.getProperty("os.name").toLowerCase(); 
if (osType.indexOf("mac") >= 0) { 
    Application.getApplication().setDockIconImage(new ImageIcon(url).getImage()); 
} 

要麼刪除import和完全限定Application或所有移動到只會在這種情況下被加載單獨的類。例如:

if (osType.indexOf("mac") >= 0) { 
    new MyMacSpecificStuff(); 
} 

這會在運行時解決問題。如果您還需要在Windows上編譯它,則需要爲這些Mac OS X類使用存根。有關更多信息,請參閱here

+0

不需要在Windows上編譯,但我實際上做了你所說的,我把所有東西都移到了另一個類它仍然沒有幫助,虐待嘗試,如果現在... – Dima

+0

我覺得愚蠢...試圖用try/catch來矯枉過正,當它是一個簡單的如果.... – Dima