Как запустить ZeroMQ с Java?

У меня проблема с ZeroMQ с Java с использованием Eclipse и Windows XP. Я успешно установил [я думаю] библиотеки 0MQ, а также привязки Java. Инструкции, которые я использовал для этого, расположены здесь.

Были созданы два файла: zmq.jar и jzmq.dll. Я поместил файл jar в свой проект, что позволило компилировать код ОК. Я также установил java.library.path в каталог DLL, добавил главную директорию в свой проект и добавил libzmq.dll в свой PATH. (Все инструкции).

Я все еще получаю следующее исключение, которое я не могу исправить:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\jzmq\lib\jzmq.dll: Can't find dependent libraries

В каких других библиотеках зависит jzmq.dll? Я пробовал размещать libzmq.dll везде, но это не помогло. Это - это пример кода, который я пытаюсь получить.

Спасибо.

Ответ 1

Поместите любую DLL в корень Windows или Windows System32 - это срочное решение, оно просто приведет вас к Dll HELL.

Что вам нужно сделать, это добавить двоичный путь ZQM в System PATH.

Я собрал 64-битные ZMQ и JZMQ через час, и вот моя структура папок:

c:\ZMQ\bin  
 ---  jzmq.dll, libzmq.dll
c:\ZMQ\lib 
 ---  ZMQ.jar

вот шаг:

  • добавить путь binray в систему enviromennt, подробные шаги панель управления - система --- параметры настройки и во всплывающей вкладке найдите "предварительные" - "переменные окружения" - найдите "PATH" в "системных vairiabls" и добавьте C:\ZMQ\bin в значении

  • откройте приглашение dos и введите "где jzmq.dll" (я не уверен, существует ли где .exe в XP), чтобы подтвердить, находится ли он в PATH сейчас.

  • Запустите Eclipse и откройте свой проект, щелкните правой кнопкой мыши имя вашего проекта и выберите в меню "путь сборки - добавьте внешние архивы" выберите C:\ZMQ\lib\zMQ.jar.

Все сделано!

На моем ПК пример выполняется правильно.

Ответ 2

Вы должны скопировать файл libzmq.dll в местоположение, указанное java.library.path, и использовать это:

System.loadLibrary("libzmq")

Причина в том, что jzmq зависит от libzmq, поэтому сначала нужно загрузить libzmq.

Ответ 3

Я тоже столкнулся с этой проблемой. Я нашел обходное решение, поместив jzmq.dll и libzmq.dll в папку System32. Мне не нравится это как постоянное решение, но оно работает на данный момент.