如何在mac上运行jar文件

时间:2011-08-05 11:57:40

标签: macos jvm 64-bit swt

我在Windows操作系统上的eclipse中开发了一个带有external library(DJProject)的应用程序,myjar文件在Windows上运行成功但是当我将myjar带入macintosh时我有例外;

Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.eclipse.swt.graphics.Device.<clinit>(Unknown Source)
    at chrriis.dj.nativeswing.swtimpl.core.SWTNativeInterface$InProcess.initialize(SWTNativeInterface.java:559)
    at chrriis.dj.nativeswing.swtimpl.core.SWTNativeInterface$InProcess.access$2(SWTNativeInterface.java:558)
    at chrriis.dj.nativeswing.swtimpl.core.SWTNativeInterface.initialize_(SWTNativeInterface.java:238)
    at chrriis.dj.nativeswing.swtimpl.NativeInterface.initialize(NativeInterface.java:71)
    at chrriis.dj.nativeswing.swtimpl.core.SWTNativeInterface.open_(SWTNativeInterface.java:316)
    at chrriis.dj.nativeswing.swtimpl.NativeInterface.open(NativeInterface.java:100)
    at SwtClassDeneme.runBrowser(SwtClassDeneme.java:58)
    at SwtClassDeneme.main(SwtClassDeneme.java:49)

我该如何解决这个问题?

感谢

2 个答案:

答案 0 :(得分:1)

64-bit Eclipse for OSX

从该安装中获取64位SWT二进制文件。你很幸运,他们最终决定为OSX创建一个64位SWT二进制文件,他们之前曾声称他们从未这样做过。

plugins/org.eclipse.swt.cocoa.macosx.x86_64_3.6.1.v3655c.jar(最后的版本会有所不同)应包含您想要的内容。

时间评论08/05/2011

同样从实用的角度来看,Apple已经在OS X上拥有了他们的JVM.他们想要与Java无关,但这是一个不同的争论。根据我的理解,在OpenJVM上工作的优秀人员可以使用OS X.

时间评论结束

答案 1 :(得分:0)

SWT有本机代码。所以你必须构建你的包以瞄准你想要的精确目标。我有点惊讶你只得到32位和64位错误,我几乎会发现它会尝试加载Windows DLL!

您需要配置SWT以定位64位MacOS JVM。如果您正在使用RCP,则需要不同的OSGi片段。如果您使用的是本机SWT,则需要在该级别上工作。

您需要知道的一些内容存在于先前的问题/答案中,请参阅:

Create cross platform Java SWT Application