缺少内置java api的ClassNotFound异常

时间:2013-05-20 18:00:04

标签: java windows macos cross-platform

我有一个GUI软件,它也使用内置的java apple API, 问题是我希望它在Windows和OSX上运行,但在我使用它的功能上,如下所示:

import com.apple.eawt.Application;

 try{//if osx

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

它仍然抛出ClassNotFoundException,即使它在try / catch上也是如此 有没有办法解决这个问题?

1 个答案:

答案 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

相关问题