2

まず第一に、これは皆さんにとって非常に初歩的な質問になるかもしれません。しかし、彼らが言うように、あなたが尋ねなければ、どのように学びますか?

だから、ここに事があります:

この .JAR ファイルは、Java 1.4 で動作するように開発されており、SUSE 9 Enterprise Server にインストールされています。

また、さまざまなプラットフォームでテストしました: - Suse 9 Enterprise Server 32 ビット + JDK 1.4.2_08 + LIBSTDC++.SO.6: スムーズに実行され、エラーは返されません。

  • Red Hat 5.5 Server 64 ビット + JDK 1.4: スムーズに実行され、エラーは返されませんでした。

  • Suse 9 Enterprise Server 64 ビット + JDK 1.4.2_08 (32 ビット) + LIBSTDC++.SO.6: プログラムの32ビット ライブラリを使用すると、「スレッド "main" java.lang で例外が発生しました」というエラーが返されます。 UnsatisfiedLinkError: /usr/lib/MySharedLibrary.so: /usr/lib/MySharedLibrary.so: 未定義のシンボル: NFQuality"

しかし、プログラムの64ビット ライブラリを使用すると、次のエラーが返されます。共有オブジェクト ファイルを開く: そのようなファイルまたはディレクトリはありません

MySharedLibrary があるパスを指定して java -Djava.library.path コマンドを実行しようとしましたが、うまくいきませんでした。

私の質問は:

Suse 9 32 ビットとまったく同じ構成であるのに、Suse 9 64 ビットでエラーが返されるのはなぜですか?

アーキテクチャに違いがあることは理解しています。しかし、64 ビットの RedHat 5.5 では動作するため、アーキテクチャのコンパイルの問題ではありません。

このパズルを解いてくれる人はいますか? 私の可能な解決策は何ですか?

そこにいるすべての達人に感謝します。

4

1 に答える 1

0

32 ビット JVM から 64 ビット ライブラリをリンクすることはできません。64 ビット ライブラリをリンクする場合は、64 ビット Java を使用します。

未定義シンボルについて。redhat に存在していた一部のライブラリが suse にないため、リンクが壊れている可能性があります。について詳しく知らずに質問に答えられるとは思えませんMySharedLibrary.so

于 2012-03-15T21:57:23.687 に答える