2012-11-19 22 views
5

私はJavaで書いているプログラムにサードパーティのDLLを使用しようとしています。残念なことに、32ビットしかサポートしていません。私は64ビットVMでDLLをロードしようとすると、私は次のエラーを取得:Javaの64ビットマシンで32ビットdllを実行する

Can't load IA 32-bit .dll on a AMD 64-bit platform 

を、私は日食で働く32ビットVMで動作して試してみましたが、私はプロジェクトをエクスポートするとき私は同じエラーが発生します。助けてください!

敬具、ベン

+0

Eclipseの外で適切なJavaを使用していますか?正しいバージョン(32ビット)が使用されているかどうかを確認するには、java -versionを試してください。 – Burkhard

答えて

9

あなたは、64ビットホットスポットJVMに32ビットのDLLを使用することはできません。それは動作しません。 32ビットDLLをサポートする他の64ビットJVMについてはわかりません。

選択肢は次のとおりです。32ビットJVMへ

  • スイッチ。 (は32ビットJVMを64ビットOSで実行できます...)
  • DLLを64ビットに移植します。
  • 純粋なJava、または64ビットのDLLを持つ代替ライブラリに切り替えます。唯一のEclipseを実行するには、32ビットJVM、とEclipseの外でアプリケーションを実行するには、64ビットJVMを実行していることを意味することができます
  • I have tried running in a 32-bit VM, which works in eclipse, but when I export the project, I get the same error.


。 (問題は、アプリケーションの実行方法であり、エクスポート方法ではありません。)

+1

+1 64ビットアプリケーションで32ビット共有ライブラリを読み込めるようにするOSはわかりません。 Javaの制限ではありません。 –

+0

私は長い質問の長い文字列の後に、なぜ私のコードが失敗したか、この質問と回答を見つけました。これで解決しました。感謝万円。私は今日何かを学んだ! – KjetilNordin

2

64ビットJVMの32ビット共有ライブラリを使用する唯一の方法は、追加の32ビットJVMを実行することです。 RMI、JMS、または何らかの形式のメッセージングを介してアクセスします。

32ビットライブラリとポインタを交換できない64ビットプログラム(Javaだけではない)の本質的な制限です。

関連する問題