我在Windows上用Java编写了一个小应用程序,并使用Java 1.6编译。该应用程序使用SWT作为其GUI。它在Windows上运行良好。但是当我将它带到我的Mac时,应用程序无法运行。每次我尝试运行它时,我都会在控制台上收到InvocationTargetException错误:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:197)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:138)
我尝试在Java 1. 5中编译我的应用程序,但我仍然遇到同样的问题。我还尝试将Mac上的默认Java AVM设置为1.5和1.6,但两个版本都不起作用。我在Mac OS X 1.5.8上运行 我完全不知道出了什么问题,因为应用程序在我的Windows机器上运行得非常好。
感谢您的帮助。
答案 0 :(得分:0)
查看基础异常:
Cannot load 32-bit SWT libraries on 64-bit JVM
SWT有一些本机代码(它不是纯Java),而你拥有的SWT二进制文件用于32位OSX。同时,您的JVM是64位VM。
这是关于Eclipse.org主题的discussion。
这篇文章告诉你在哪里获得64 bit build。
或者,此链接告诉您如何运行OSX VM in 32 bit模式:
答案 1 :(得分:0)
错误消息非常明显 - 您不能将32位库与64位JVM一起使用 尝试http://technophi.com/2010/03/22/cannot-load-32-bit-swt-libraries-on-64-bit-jvm/中的解决方案(将-d32开关添加到命令行)