3

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

2 回答 2

9

JAR 不是 32 位或 64 位的,它可以在任一 JVM 上运行。

但是,本机共享库是 32 位或 64 位的,它只能在具有该位数的 JVM 上运行。这是应用程序在 Windows 和 Linux(以及所有其他操作系统 AFAIK)上运行方式的限制。无法在 32 位 JVm 上加载 64 位库,反之亦然。您需要将您的 sahred 库版本与您的 JVM 相匹配。

于 2012-11-14T18:48:20.950 回答
1

我有一个类似的问题,我通过在命令提示符中提供完整路径解决了确保在正确的 jvm 上运行我的 jar(我的系统中已经有 2 个版本的 java)

似乎您也可以使用 -d32 或 -d64 开关,即使在我的系统中不起作用(参见这个和其他替代方法是How to run 32-bit Java on Mac OSX 10.7 Lion

于 2014-07-03T14:18:37.470 回答