首页 文章

线程“main”中的异常java.lang.UnsatisfiedLinkError:Eclipse中java.library.path中没有jzmq

提问于
浏览
1

导入org.zeromq.ZMQ;

  • 对于上面的import语句,我在jzmq主文件夹中使用“org文件夹”,该文件夹由ZMQ.java文件组成 .

  • 所以,编译没有问题 . 当我开始运行程序时,它显示以下异常

线程“main”中的异常java.lang.UnsatisfiedLinkError:java.lang.ClassLoader.loadLibrary(未知来源)java.lang.ClassLoader.loadLibrary(未知来源)中的java.library.path中没有jzmq,java.lang.System上的java.lang.Runtime.loadLibrary0(未知来源)位于server.main的org.zeromq.ZMQ . (ZMQ.java:41)的.loadLibrary(未知来源)(Server.java:13)

我该怎么办?我必须下载哪些软件包以及我必须在java中使用哪些导入语句用于ZeroMQ helloworld示例?

我看到很多人在某处使用libzmq.dll,jzmq.dll和一些jar文件来避免这种异常 . 但我想要一个明确的答案 .

2 回答

  • 1

    我在Linux(eclipse)上遇到了同样的问题,我通过为我的zmq.jar设置本机库jzmq的路径来解决它 . 通过进入项目属性(右键单击项目 - >属性... - > Java构建路径),您可以在库选项卡上将JDIC.jar添加为库,展开它,然后编辑本机库位置属性指向包含本机库的文件夹:在我的例子中,它是/ usr / local / lib .

    因此,基本上,您可以将-Djava.library.path添加为启动配置中的VM参数,或者设置http://www.eclipsezone.com/eclipse/forums/t49342.html中指定的本机库

    我希望它会帮助那些遇到这个问题的人 .

    祝你有美好的一天 .

  • 3

    这个lib(jzmq)绑定到本机库libzmq . 如果你不使用完整的java实现 - jeromqmvnrepojeromq git) . 它具有几乎相同的功能 .

    否则,如果你需要jzmq,你必须正确编译它 . 这是我在windows x64上编译它的方式:

    要构建库,您需要IDE Visual Studio 2010或更高版本 . 在这个例子中我用了2013版 . 所有工作都在 C:\zmq 目录中执行(例如) .

    • 获取zeromq,jzmq和libsodium-1.0.10源代码 .

    • 将zeromq目录的全部内容复制到 C:\zmq .

    • 创建目录 C:\zmq\java .

    • 将jzmq目录的全部内容复制到 C:\zmq\java .

    • 创建目录 C:\zmq\libsodiumC:\zmq\libsodium

    • 复制到 C:\zmq\libsodium\bi n libsodium-1.0.10-msvc\Win32libsodium-1.0.10-msvc\x64 目录 .

    • 创建目录 C:\zmq\libsodium\src .

    • 复制到 C:\zmq\libsodium\src directory libsodium-1.0.10-msvc \ include .

    Zeromq.

    在Visual Studio中打开目录 C:\zmq\builds\msvc 中相应的zeromq解决方案文件 .

    打开配置管理器 . 活动配置解决方案 - 选择DynRelease . 主动解决方案平台 - 选择x64 .

    打开项目属性页面,转到配置属性 - C / C - 常规,检查包含文件目录的路径 .

    然后选择linker - General,并检查libraries目录的路径 .

    在配置文件 C:\zmq\builds\msvc\vs2013\libsodium.import.props 中的正确路径中 .

    然后补丁,如果一切正确,你将在 C:\zmq\bin\x64\Release\v120\dynamic 目录中得到dll . 如果不是 - 请查看日志,进行更改并重建 .


    Jzmq.

    现在从目录 C:\zmq\java\builds\msvc\ 打开相应的jzmq解决方案文件

    以及在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库的目录的路径 . 它看起来像这样:

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

    在属性页面上,转到配置属性 - 程序集事件 - 程序集之前的事件和检查属性“命令提示符”(首先检查复制命令中文件的路径) . 它看起来像这样:

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

    然后buid jzmq,如果一切正确,你将获得 C:\zmq\java\lib 中的文件 .

    如果不是 - 请查看日志,进行更改并重建 .


    C:\zmq 中,您只需要bin java\lib 目录,其余的可以删除 .

    添加到PATH bin\x64\Release\v120\dynamic 的路径并使用 -Djava.library.path="path_to_java\lib" 运行java app

相关问题