如何在64位jvm上运行32位jar

时间:2012-11-14 18:33:20

标签: java jar jvm

我下载了一个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

2 个答案:

答案 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