2016-11-05 6 views
1

Импорт org.zeromq.ZMQ;Исключение в теме "main" java.lang.UnsatisfiedLinkError: no jzmq in java.library.path в Eclipse

-Для вышеуказанного оператора импорта я использую «org folder» в главной папке jzmq, которая состоит из файла ZMQ.java.

-Проблема, нет проблем с сборником. Когда я начинаю запустить программу, он не показывает ниже исключения

Исключение в потоке «основной» java.lang.UnsatisfiedLinkError: нет jzmq в java.library.path на java.lang.ClassLoader.loadLibrary (Unknown Source) в java.lang.Runtime.loadLibrary0 (Неизвестный источник) в java.lang.System.loadLibrary (Неизвестный источник) at org.zeromq.ZMQ. (ZMQ.java:41) на сервере.main (Server.java:13)

Что мне делать? Какие пакеты мне нужно загрузить и какие импортеры я должен использовать для примера helloworld ZeroMQ в java?

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

ответ

3

Этот lib (jzmq) является обязательным для родной библиотеки libzmq. Если вы не используете функции libzmq (например, ipc), вам лучше использовать полную реализацию java - jeromq (mvnrepo, jeromq git). Он имеет почти ту же функциональность.

В противном случае, если вам нужно jzmq, вы должны скомпилировать его должным образом. Так я скомпилировал его на окнах x64:

Для создания библиотеки вам нужна IDE Visual Studio 2010 или выше. В этом примере я использовал версию 2013 года. Все работы выполняются в каталоге C:\zmq (например).

  1. Получить источники zeromq, jzmq и libsodium-1.0.10.
  2. Скопируйте все содержимое каталога zeromq в C:\zmq.
  3. Создать каталог C:\zmq\java.
  4. Скопируйте все содержимое каталога jzmq в C:\zmq\java.
  5. Создание каталогов C:\zmq\libsodium и C:\zmq\libsodium
  6. Копировать в C:\zmq\libsodium\bi п libsodium-1.0.10-msvc\Win32 и libsodium-1.0.10-msvc\x64 каталогов.
  7. Создать каталог C:\zmq\libsodium\src.
  8. Копировать в C:\zmq\libsodium\src directory libsodium-1.0.10-msvc \ include.

Zeromq.

Открыть в Visual Studio соответствующий файл решения zeromq из каталога C:\zmq\builds\msvc.

Открыть диспетчер конфигурации. Активные конфигурации - выберите DynRelease. Активная платформа решений - выберите x64.

Откройте страницу свойств проекта, перейдите в Свойства конфигурации - C/C++ - Общие, проверьте пути для каталогов файлов include.

Затем выберите компоновщик - Общие и проверьте пути для каталогов библиотек.

В файле конфигурации C:\zmq\builds\msvc\vs2013\libsodium.import.props правильный путь в разделе.

Тогда заработайте, если все было правильно, вы получите dlls в каталоге C:\zmq\bin\x64\Release\v120\dynamic. Если это не так - проверьте журналы, внесите изменения и перестройте их.


Jzmq.

Теперь откройте соответствующий файл jzmq решения из каталога C:\zmq\java\builds\msvc\

Как и в менеджере открытой конфигурации ZeroMQ проекта и выберите Release и платформу x64.

Откройте страницу свойств проекта, перейдите в «Свойства конфигурации» - «Каталоги VC++» и проверьте, что путь, в котором установлен ваш JDK, является правильным. Вы себе там что-то вроде этого:

..\..\..\..\include;C:\Program Files\Java\jdk1.7.0_71\include;C:\Program 
Files\Java\jdk1.7.0_71\include\win32;$(IncludePath) 

Также проверьте, что Библиотека Каталоги (забыла его имя) путь включает путь к каталогу со встроенным ZeroMQ LIBS. Это будет выглядеть следующим образом:

..\..\..\..\bin\x64\Release\v120\dynamic;$(LibraryPath) 

На странице свойств перейдите в Свойства конфигурации - сборочные событий - событие перед сборкой и проверить свойство «Командная строка» (первый из всех проверочных путей к файлам в команде копирования). Это будет выглядеть следующим образом:

copy ..\config.hpp "..\..\..\src\main\c++\" 

Тогда Buid jzmq, если бы все было правильно, вы получите файлы в C:\zmq\java\lib.

Если это не так - проверьте журналы, внесите изменения и перестройте их.


В C:\zmq вам нужно только бен java\lib каталоги, остальные могут быть удалены.

Добавить в PATH путь к bin\x64\Release\v120\dynamic и запустить вас Java приложение с -Djava.library.path="path_to_java\lib"