如何提供对windows jre中不存在但出现在mac jre中的类的引用

时间:2014-06-18 13:57:31

标签: java eclipse macos e4

我开发了一个在mac os x和windows

中运行的e4应用程序

我正在使用mac os x jre中存在的一些类但它们在windows jre中缺失

当我们从windows eclipse运行它时,丢失的文件显示错误

mac jre中存在相同的文件,因此当我们从mac eclipse运行它时,这不显示错误

引用库是 - /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar(在windows jre中不存在)

我想摆脱Windows平台“eclipse”中的错误

如果我将ui.jar库添加为引用,则mac中的功能会变得疯狂并抛出运行时异常(java.lang.RuntimeException:Unimplemented)

2 个答案:

答案 0 :(得分:1)

将Mac代码放入插件或片段中,并在MANIFEST.MF中设置平台过滤器,以便它仅包含在Mac版本中。例如:

Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )

指定代码仅适用于64位Mac OS X.

您必须安排仅在Mac上调用插件中的代码。一种方法是还有一个仅限Windows的插件,其中包含相同类的Windows版本。

答案 1 :(得分:1)

首先,我想说这是一个非常沮丧的事情; Eclipse应用程序(以及一般的Java应用程序)旨在与平台无关;引入依赖于特定于平台的实现的代码通常是坏主意和最后的手段。如果您能提出任何替代方案,我建议您这样做。

说完了......

您可以隔离使用特定于Mac的类的代码并将其放入Fragment中。 Fragment在它的清单中有限制,只允许它安装在OS X上。这就是SWT如何处理其实现的特定于平台的部分。

详细了解碎片in the Eclipse Help