线程中出现异常&;quot;main&;lang.UnssufiedLinkError:在Eclipse中的java.Library.Path中没有jzmq
导入org.zeromq.ZMQ;
-对于上面的导入语句,我使用的是jzmq主文件夹中的"org文件夹",该文件夹由ZMQ.Java文件组成。
-因此,编译没有问题。当我开始运行该程序时,它显示以下异常
线程"main"java.lang.UnssufiedLinkError中出现异常:在java.Library.Path中没有jzmq 在java.lang.ClassLoader.loadLibrary(未知源) 在java.lang.Rounme.loadLibrary0(未知源) 在java.lang.System.loadLibrary(未知源) 在org.zeromq.ZMQ。(ZMQ.Java:41) 在server.main(Server.Java:13)我应该做些什么? 对于Java中的ZeroMQ HelloWorld示例,我必须下载哪些包,必须使用哪些导入语句?
我看到很多人都在使用libzmq.dll、jzmq.dll和一些JAR文件来避免这种异常。但我想要一个明确的答案。
解决方案
此库(Jzmq)绑定到本机库libzmq。 如果您不使用libzmq的功能(例如IPC),您最好使用完整的Java实现-Jeromq(mvnrepo,jeromq git)。它具有几乎相同的功能。
否则,如果您需要jzmq,则必须正确编译它。 这是我在Windows x64上编译它的方式:
要构建该库,您需要使用IDE Visual Studio 2010或更高版本。在本例中,我使用的是2013版本。所有工作都在C:zmq
目录中执行(例如)。
- 获取zeromq、jzmq和libNa-1.0.10源。
- 将zeromq目录的全部内容复制到
C:zmq
。 - 创建目录
C:zmqjava
。 - 将jzmq目录的全部内容复制到
C:zmqjava
。 - 创建目录
C:zmqlibsodium
和C:zmqlibsodium
复制到 - 创建目录
C:zmqlibsodiumsrc
。 - 复制到
C:zmqlibsodiumsrc directory
LibNa-1.0.10-msvc包括。
C:zmqlibsodiumi
nlibsodium-1.0.10-msvcWin32
和
libsodium-1.0.10-msvcx64
目录。
零位
在Visual Studio中打开目录C:zmquildsmsvc
中的相应zeromq解决方案文件。
打开配置管理器。主动配置解决方案-选择DyRelease。灵动解决方案平台-选择x64。
打开项目属性页,转到配置属性-C/C++-常规,检查包含文件目录的路径。
然后选择链接器-常规,并检查库目录的路径。
配置文件C:zmquildsmsvcvs2013libsodium.import.props
部分中的路径正确。
C:zmqinx64Releasev120dynamic
目录中获得dll。如果不是,请签出日志,进行更改并重建它。
jzmq.
现在从目录C:zmqjavauildsmsvc
以及在zeromq项目中打开配置管理器并选择Release和x64 Platform。
打开项目属性页面,转到配置属性-VC++目录并检查安装JDK的路径是否正确。 您将在那里看到类似以下内容:........include;C:Program FilesJavajdk1.7.0_71include;C:Program
FilesJavajdk1.7.0_71includewin32;$(IncludePath)
还应检查库目录(忘记其名称)路径是否包含指向构建了zeromq库的目录的路径。
它将如下所示:
........inx64Releasev120dynamic;$(LibraryPath)
在属性页上,转到配置属性-程序集事件-程序集前事件,并选中属性"命令提示符"(首先在复制命令中检查文件的路径)。
它将如下所示:
copy ..config.hpp "......srcmainc++"
然后构建jzmq,如果一切正常,您将在C:zmqjavalib
中获得文件。
如果不是,请签出日志,进行更改并重建它。
在C:zmq
中,您只需要binjavalib
目录,其余目录可以删除。
将路径添加到binx64Releasev120dynamic
并使用-Djava.library.path="path_to_javalib"
运行您的Java应用程序
相关文章