如何在Java中运行ZeroMQ?

11
我在使用Eclipse和Windows XP运行ZeroMQ时遇到了问题。 我已经成功安装了0MQ库以及Java绑定库,我认为是这样。 我使用的说明位于此处
构建了两个文件:zmq.jarjzmq.dll。 我将jar文件放在了我的项目中,这使得代码可以成功编译。 我还将java.library.path设置为dll目录,将perf目录添加到项目中,并将libzmq.dll添加到PATH中(都按照说明进行操作)。
我仍然遇到以下无法解决的异常: Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\jzmq\lib\jzmq.dll: Can't find dependent libraries 我需要知道jzmq.dll依赖于哪些其他库?我已经尝试将libzmq.dll放在各个位置,但没有帮助。这里是我正在尝试使其工作的代码示例。
谢谢。
3个回答

8
将任何dll放入Windows根目录或Windows System32都是一种丑陋的解决方案,它只会让你进入Dll地狱。
你需要做的是将ZQM二进制路径添加到系统PATH中。
我在一个小时内编译了64位ZMQ和JZMQ,这是我的文件夹结构:
c:\ZMQ\bin --- jzmq.dll,libzmq.dll c:\ZMQ\lib --- ZMQ.jar 以下是步骤:
  1. 将二进制路径添加到系统环境中,详细步骤如下: 控制面板--系统---高级设置,在弹出的选项卡中找到“高级”--“环境变量”---在“系统变量”中找到“PATH”,并将C:\ZMQ\bin添加到值中。
  2. 打开dos提示符,并键入“where jzmq.dll”(我不确定XP中是否存在where.exe)以确认它现在是否在PATH中。
  3. 启动Eclipse,打开您的项目,右键单击您的项目名称,选择菜单“构建路径--添加外部档案”,选择 C:\ZMQ\lib\zMQ.jar。
全部完成!
在我的PC上,示例运行正确。

你想编译而不是使用二进制文件有什么原因吗? - user443854
没有什么特别的,只是因为我的系统包括JDK在内都是64位的,所以我想从头开始编译它。 - ray_linn
1
你用什么方法编译64位的ZMQ和JZMQ? - Ten_Ten_Steve
MinGW-W64,我是其中一位开发者。 - ray_linn
使用VS2012会出现许多未解决的外部符号错误。我将尝试使用MinGW。 - liang

3
你需要将libzmq.dll文件复制到java.library.path指定的位置,并使用以下代码:
System.loadLibrary("libzmq")

原因是jzmq依赖于libzmq,因此必须先加载libzmq。

这确实比使用系统范围的路径更好。 - Jason S

1

我也遇到了这个问题。我找到了一个解决方法,将jzmq.dll和libzmq.dll放入System32文件夹中。虽然我不喜欢这个作为永久解决方案,但它目前可以解决问题。


感谢您的回复。我只需要将libzmq.dll放入System32文件夹中,因为我在Eclipse中引用了jzmq.dll。它可以工作,但我仍然需要一个更长久的解决方案。 - Noah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接