Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
缺少内置java api时发生ClassNotFound异常_Java_Windows_Macos_Cross Platform - Fatal编程技术网

缺少内置java api时发生ClassNotFound异常

缺少内置java api时发生ClassNotFound异常,java,windows,macos,cross-platform,Java,Windows,Macos,Cross Platform,我有一个GUI软件,它也使用内置的java apple API, 问题是我希望它同时在windows和OSX上运行,但在我使用它的函数上运行,如下所示: import com.apple.eawt.Application; 及 它仍然抛出ClassNotFoundException,即使它处于try/catch状态 有办法解决吗?您需要确保代码不会在非Mac系统上运行。例如: String osType = System.getProperty("os.name").toLowerCase()

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

import com.apple.eawt.Application;

它仍然抛出ClassNotFoundException,即使它处于try/catch状态
有办法解决吗?

您需要确保代码不会在非Mac系统上运行。例如:

String osType = System.getProperty("os.name").toLowerCase();
if (osType.indexOf("mac") >= 0) {
    Application.getApplication().setDockIconImage(new ImageIcon(url).getImage()); 
}
if (osType.indexOf("mac") >= 0) {
    new MyMacSpecificStuff();
}
要么删除
导入
并完全限定
应用程序
,要么将其全部移动到一个单独的类中,该类仅在这种情况下加载。例如:

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

这将在运行时修复问题。如果您还需要在Windows上编译,则需要为这些MacOSX类使用存根。有关这方面的更多信息,请参阅。

jar是否在您的类路径上?如果您捕获了
异常,然后什么也不做,您如何判断它是否抛出了
ClassNotFoundException
?我可以向您保证,代码不会抛出该异常。我在控制台上看到异常,它的ClassNotFoundException和它没有捕获它,因为它从这一行抛出并打印到控制台,不需要在windows上编译,但我真的按照你说的做了,我把所有的东西都移到了另一个类,它仍然没有帮助,我现在试试if…我觉得很愚蠢。。。当它是一个简单的if….时,试图用try/catch过度杀死它。。。。