5

CentOS を実行している VM に 0MQ をインストールしました。C ベースのアプリケーションで問題なく動作しています。しかし、JZMQ バインディングを介して Java アプリケーションを動作させることができません。エラーは次のとおりです。

java -Djava.library.path=/usr/local/lib -jar AidApps.jar receive localhost:9007
Starting the receiver application.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/local/lib/libjzmq.so.0.0.0: libzmq.so.1: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1750)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1675)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at org.zeromq.ZMQ.<clinit>(ZMQ.java:34)
at com.ijet.Receiver.main(Receiver.java:9)
at com.ijet.Main.main(Main.java:13)

0MQ または JZMQ のインストール中にエラーは発生しません。すべてのライブラリを /usr/local/lib にコピーしようとしましたが、何も解決しませんでした。何か案は?これは私の Mac では動作しますが (JAR が動作することはわかっています)、Linux ボックスでは動作しません。

4

2 に答える 2

10

この問題を修正する手順 (クレジットは J16-SDiZ に送られます):

1) cp /root/zeromq-2.1.11/src/.libs/*.* /usr/local/lib
2) nano /etc/ld.so.conf.d/zmq.conf
3) 行を追加/usr/local/libして保存
4) ldconfig
5) 実行して検証ldconfig -v | grep zmq
6)​​ JAR を実行java -Djava.library.path=/usr/local/lib/ -jar AidApps.jar receive localhost:9007

-Djava.library.path を指定する必要があることに注意してください。これは jzmq.jar ファイルを指します。

于 2012-06-21T16:38:09.687 に答える
7

これは、ld.so が .so を解決できないためlibzmq.so.1.0.0です。

/usr/local/libパスを追加し/etc/ld.so.configて実行ldconfigし、キャッシュを再構築します。

于 2012-06-21T16:31:11.463 に答える