我下载了一个java应用程序(来自android日志的桌面LogCat查看器),我正在尝试运行它。我的问题是我收到一个似乎暗示我无法在64位jvm上运行32位Java应用程序的错误。堆栈跟踪在下面。
我需要指出,我无法改变消息来源。我无法访问它。我需要知道如何配置我的jvm来运行jar。我在Windows 7中运行。
> java -jar LogcatOfflineViewer_20120505.jar
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(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 com.logcat.offline.UIThread.runUI(UIThread.java:112)
at com.logcat.offline.Main.main(Main.java:6)
... 5 more
答案 0 :(得分:8)
JAR不是32位或64位,它可以在任何一个JVM上运行。
但是,本机共享库可以是32位或64位,只能使用具有该位数的JVM运行。这是应用程序在Windows和Linux(以及其他所有操作系统AFAIK)上运行的方式的限制。无法在32位JVm上加载64位库,反之亦然。您需要将sahred库版本与JVM匹配。
答案 1 :(得分:1)
我有一个类似的问题,我解决了确保通过在命令提示符中提供完整路径来在正确的jvm上运行我的jar(我的系统中已经有2个版本的java)
似乎你也可以使用-d32或-d64开关,即使在我的系统中没有工作(请参阅此和其他替代方案是How to run 32-bit Java on Mac OSX 10.7 Lion)