3

Javaアプリ(AndroidログからデスクトップLogCatビューアー)をダウンロードして実行しようとしています。私の問題は、64ビットのjv​​mで32ビットのJavaアプリを実行できないことを意味するようなエラーが発生することです。スタックトレースは以下のとおりです。

ソースを変更できないことを指摘する必要があります。私はそれにアクセスできません。jarを実行するようにjvmを構成する方法を知る必要があります。私はWindows7で実行しています。

> 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(および他のすべてのOS AFAIK)でのアプリケーションの実行方法の制限です。32ビットJVmに64ビットライブラリをロードする方法はありません。その逆も同様です。SahredライブラリのバージョンをJVMと一致させる必要があります。

于 2012-11-14T18:48:20.950 に答える
1

コマンドプロンプトでフルパスを指定することにより、正しいjvmでjarを実行することを保証することで解決した同様の問題がありました(システムにはすでに2つのバージョンのJavaがありました)

私のシステムでは機能しなかった場合でも、-d32または-d64スイッチを使用できるようです(これと他の代替手段は、Mac OSX 10.7 Lionで32ビットJavaを実行する方法です) 。

于 2014-07-03T14:18:37.470 に答える