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

安装libzmq

libzmq是ZMQ的核心库,首先需要安装该库,然后才能使用ZMQ。
一开始图方便,不想编译源码,比较麻烦不是?所以从http://zeromq.org/distro:microsoft-windows下载windows安装程序进行安装。但是发现还是需要编译安装jzmq,所以干脆已开始就编译安装libzmq。
libzmq源码的git项目位于https://github.com/zeromq/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属性页/配置属性/生成事件/预先生成事件中,可以看到命令行:
 
点击命令行,看到原来的命令是:
说明:
第一个红框内的命令是不能执行的,必须按这个格式修改下:copy ..\config.hpp “..\..\..\src\main\c++\”;
第二个javac命令也是错误的,红框内的ZFrame.java文件在编译的时候会找不到Utils.java文件。错误提示如下:
注意上面红框内的错误提示,这说明ZFrame.java不能识别Utils这个类。但实际上,该类与ZFrame在同一个包内,且访问修饰符是public,所以按理说是可以访问的!之所以报不能访问的错误(即”找不到符号“),是因为Utils.java没有被编译,所以必须在ZFrame.java前加上Utils.java文件,如下:
  1. 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。如下:
 
可以编译了,点击”生成/生成解决方案“,输出如下则意味着成功了。
 
生成文件,包括jzmq.dll,jzmq.lib,zmq.jar,被放在项目的lib目录下。
 
至此,花费数小时来解决问题,构建过程总算艰难完成。但是目前尚不清楚zmq.jar包是否能正常工作,有待测试,详细过程请点击这里
 
 

WINDOWS 安装ZeroMQ的更多相关文章

  1. windows安装ActiveMQ以及点对点以及发布订阅

    一.MQ产品的分类 1.RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级 ...

  2. Mysql(windows)安装

    h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...

  3. Windows 安装JRuby 生成 war 到 tomcat 运行

    Windows安装JRuby Rails 直接下载 JRuby,不装 Ruby. http://jruby.org/download 该安装包可以配好环境变量 %JRUBY_HOME% 等 安装 bu ...

  4. windows安装rabbitmq

    官网下载windows安装版本:http://www.rabbitmq.com/install-windows.html ,安装文件rabbitmq-server-3.6.5.exe 前提:安装erl ...

  5. windows 安装 mongodb

    windows 安装 mongodb 下载 首先到官网下载合适的安装包,下载地址为 https://www.mongodb.com/download-center MongoDB for Window ...

  6. 2016 windows安装phing:安装成功

    21:39 2016/7/212016 windows安装phing:安装成功注意:出现错误时就去更新pear:参见:http://www.cnblogs.com/pinnasky/archive/2 ...

  7. Windows安装和使用zookeeper

    之前整理过一篇文章<zookeeper 分布式锁服务>,本文介绍的 Zookeeper 是以 3.4.5 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apach ...

  8. windows 安装mysql 步骤

    Windows 安装mysql 5.7.12教程 1.在官网下载mysql5.7.12.zip并解压 复制默认配置文件my-default.ini,并命名为my.ini 使用记事本打开,修改如下配置 ...

  9. DOCKER windows安装

    DOCKER windows安装 1.下载程序包 2. 设置环境变量 3. 启动DOCKERT 4. 分析start.sh 5. 利用SSH工具管理 6. 下载镜像 6.1 下载地址 6.2 用FTP ...

随机推荐

  1. Logback 专题

    logback-spring.xml <?xml version="1.0" encoding="UTF-8"?> <configuratio ...

  2. android studio中使用9-patch报错mergeDebugResource及Duplicate resources错误处理

    由于项目中新导入了两张图片,进行9-patch之后,文件名称包含XXXX.9.png , 而android studio 对资源文件的名称有要求仅支持[A-Z][a-z][0-9]格式  而XXX.9 ...

  3. Asp UserInfoList 方法二

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserInfoList.a ...

  4. QDialog之屏蔽Esc键(简单深刻,要么重写keyPressEvent然后break忽略此事件,要么重写eventFilter然后return,都是为了忽略此事件)

    简述 Qt中Esc键会在一些控件中默认的进行一些事件的触发,比如:QDialog,按下Esc键窗口消失.大多数情况下,我们不需要这么做,那么就需要对默认事件进行屏蔽. 简述 源码分析 事件过滤器 事件 ...

  5. Android adb socket 连接失败的问题

    pc客户端通过adb forward tcp 与android app通信 场景:pc启动,能正常建立连接,当断开连接再次连接,偶现pc客户端无法与forward 的端口建立 socket连接,连接请 ...

  6. Leaflet(Esri)初识

    加载本地地图 <html> <head> <metacharset=utf-8/> <title>IdentifyingFeatures</tit ...

  7. Play Framework 模板里使用注入访问数据层

    从Play2.4开始,推荐使用依赖注入替代静态控制器.因此我们不能像play2.3那样,在模板里直接调用object访问数据层.是的,我们还是可以使用常规方式,通过传参到模板里.不过这样很多时候不方便 ...

  8. 更换Qt QtEmbedded库的版本出现问题及解决(交叉编译OpenSSL)

    近日将QtEmbedded库的版本由4.7.0更新到4.7.4.工具链并未改变,仍为 Target: arm-none-linux-gnueabiConfigured with: ......Thre ...

  9. GetSystemTimeAsFileTime讲解(从1601年1月1日到目前经过的纳秒)

    void WINAPI GetSystemTimeAsFileTime( Out LPFILETIME lpSystemTimeAsFileTime ); 这个函数获取到的是从1601年1月1日到目前 ...

  10. centos yum 安装 jdk1.8

    JDK: 版本:1.8 服务器默认安装1.7,所以不使用默认安装 yum -y list java* --查看yum的jdk安装包 yum install java-1.8.0-openjdk jav ...