我在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)
我该如何解决这个问题?
感谢
答案 0 :(得分:1)
从该安装中获取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,则需要在该级别上工作。
您需要知道的一些内容存在于先前的问题/答案中,请参阅: