zeromq java安装_WINDOWS 安装ZeroMQ

zmq看起来很好用,但是安装起来不是一般麻烦。原来以为java绑定会提供jar包直接可使用,但是官网没有提供已经编译好的库文件和jar。多么的不方便啊!最终还是要自己动手编译!

安装java版本的zmq,需要先安装libzmq,即核心库,然后是java绑定,即jzmq。

安装libzmq

libzmq是ZMQ的核心库,首先需要安装该库,然后才能使用ZMQ。

一开始图方便,不想编译源码,比较麻烦不是?所以从http://zeromq.org/distro:microsoft-windows下载windows安装程序进行安装。但是发现还是需要编译安装jzmq,所以干脆已开始就编译安装libzmq。

注意坑:从git上下载源码()后,使用vs2013编译时,弹出“无法找到sidium.h”。无法想象竟然会缺失文件!

所以如果遇到上述问题,最好还是去http://www.zeromq.org/area:download, 下载稳定版本,目前发现V4.0.5是可编译的版本。

开始编译之前,特别说明本次实践的测试环境:

编译工具:vs 2013

平台:windows 7 x64旗舰版

开始安装:

首先,运行vs2013,打开解决方案\zeromq-4.0.5\builds\msvc\msvc.sln,系统提示转换方案,选择是即可。设置配置为release win32。

执行“生成/生成解决方案”,没有意外的话构建会成功。

生成的libzmq.lib位于\zeromq-4.0.5\builds\msvc\Release,libzmq.dll则位于\zeromq-4.0.5\lib中,将libzmq.lib拷贝到\zeromq-4.0.5\lib目录,方便后面安装jzmq。

安装jzmq

jzmq是libzmq的java语言绑定。如果要在java程序中使用zmq,那么可以通过jzmq使用zmq的套接字。当然也可以使用jeromq,这是zmq的的java实现。

安装jzmq比较麻烦,其中有大量的坑,一不小心就碰到大堆错误。

接下来,开始编译安装jzmq。

下载

编译

在windows上编译时,有几个大坑!也许在https://github.com/zeromq/jzmq/issues的问题列表里有其他人遇到的问题说明,但是一开始如果作者没有特别说明,谁会去仔细看?我们都会默认没有特别说明的软件是能正常工作的,正常思维都是如此吧?

好,先打住抱怨,这没有任何用处!另外,毕竟我没有付任何费用,我不能像个怨妇一样抱怨!

了解一些坑

1)坑一:在github的jzmq项目主页上,找不到在windows上的构建说明,这应该是最大的坑吧。所以,你不清楚使用什么版本的visual studio。如果有人找到了,烦请相告。

2)坑2:“预先生成事件”的命令行根本就是错的。

在jzmq属性页/配置属性/生成事件/预先生成事件中,可以看到命令行:

wpid-591d40d1fa83ddf659aee20b7000fae3_c36e34cd-2e34-4fb3-bfcc-4741f3264c4a1.png

点击命令行,看到原来的命令是:

wpid-591d40d1fa83ddf659aee20b7000fae3_4ff5f656-3c92-4662-b324-3638438a1d431.png

说明:

第一个红框内的命令是不能执行的,必须按这个格式修改下:copy ..\config.hpp “..\..\..\src\main\c++\”;

第二个javac命令也是错误的,红框内的ZFrame.java文件在编译的时候会找不到Utils.java文件。错误提示如下:

wpid-591d40d1fa83ddf659aee20b7000fae3_6ac10d2d-5c32-4dfd-964b-ec16e981e63c1.png

注意上面红框内的错误提示,这说明ZFrame.java不能识别Utils这个类。但实际上,该类与ZFrame在同一个包内,且访问修饰符是public,所以按理说是可以访问的!之所以报不能访问的错误(即”找不到符号“),是因为Utils.java没有被编译,所以必须在ZFrame.java前加上Utils.java文件,如下:

javac ..\..\..\src\main\java\org\zeromq\ZMQ.java ..\..\..\src\main\java\org\zeromq\ZMQException.java ..\..\..\src\main\java\org\zeromq\ZMQForwarder.java ..\..\..\src\main\java\org\zeromq\ZMQQueue.java ..\..\..\src\main\java\org\zeromq\ZMQStreamer.java ..\..\..\src\main\java\org\zeromq\EmbeddedLibraryTools.java ..\..\..\src\main\java\org\zeromq\App.java ..\..\..\src\main\java\org\zeromq\ZContext.java ..\..\..\src\main\java\org\zeromq\ZDispatcher.java ..\..\..\src\main\java\org\zeromq\Utils.java ..\..\..\src\main\java\org\zeromq\ZFrame.java ..\..\..\src\main\java\org\zeromq\ZMsg.java

经过上述处理后,命令行可以工作了。

那么正式开工吧

好了,既然已经知道有哪些地方需要注意并且如何修复后,我们开始工作。编译环境和libzmq一样,仍然是使用vs 2013。

首先修改上面说的命令行不准确的这两个问题。

第二,修改jzmq的VC++包含目录和库目录。

其中,在“包含目录”中加入编译好的libzmq的include路径,并且修改java路径。在“库目录”中加入libzmq的lib路径,即上面的\zeromq-4.0.5\lib。如下:

wpid-591d40d1fa83ddf659aee20b7000fae3_e01c745b-5964-4712-8c9a-e2880db9feda1.png

可以编译了,点击”生成/生成解决方案“,输出如下则意味着成功了。

wpid-591d40d1fa83ddf659aee20b7000fae3_2a6e454d-091f-4695-9dae-2efc4bfb39e81.png

生成文件,包括jzmq.dll,jzmq.lib,zmq.jar,被放在项目的lib目录下。

wpid-591d40d1fa83ddf659aee20b7000fae3_b970eec0-14f4-4b8f-bfd2-db57c099d6d01.png

至此,花费数小时来解决问题,构建过程总算艰难完成。但是目前尚不清楚zmq.jar包是否能正常工作,有待测试,详细过程请点击这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值