10

我正在尝试从 Maven 存储库 ( http://search.maven.org/#search|ga|1|a%3A%22jzmq%22 ) 安装 jzmq,即 Java ZeroMQ 绑定。当作为依赖项添加到我的 pom.xml[1] 时,Maven 会按预期下载提供 Java 库的主 jar。除了主库之外,jzmq 还需要一个本地代码库,Maven 似乎没有下载该库。由于缺少本机代码库,Java 库在运行时引发异常。

存储库中提供了本机库,并且 jzmq 的 pom.xml[2] 文件似乎指定应下载本机库 (libjzmq.so)。如果我下载库并手动设置本机库位置,那么一切正常,但是我希望这可以通过 Maven 自动化。

我不确定为什么 Maven 不下载和安装本机库,任何有关如何解决此问题的建议或建议将不胜感激。

我正在使用 OpenJDK 和 Apache Maven 3.0.4 运行最新的 Ubuntu 版本

[0] 使用 Maven 提供的 jzmq 时引发的异常,没有关键的本机代码库。

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jzmq in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1874)
    at java.lang.Runtime.loadLibrary0(Runtime.java:849)
    at java.lang.System.loadLibrary(System.java:1087)
    at org.zeromq.ZMQ.<clinit>(ZMQ.java:39)

[1] 我的 pom.xml,其中 jzmq 作为依赖项添加

<dependency>
<GroupId>org.zeromq</groupId>
<artifactId>jzmq</artifactId>
version>2.2.2</version>
</dependency>

[2] jzmq 的 pom.xml 引用了本地库

<profile>
<id>Linux</id>
<activation>
<property>
<name>os.name</name>
<value>Linux</value>
</property></activation>
<properties>
<native.os>${os.name}</native.os>
<native.path>src/.libs/libjzmq.so</native.path>
<!-- Use platform-specific path separators here: -->
<native.library-path>src/.libs/</native.library-path>
</properties>
</profile>
4

2 回答 2

5

您需要告诉 Java 在哪里可以找到本机库。

java -Djava.library.path=/usr/local/lib xxxxx 

要运行 jzmq,你需要两件事,

  1. /usr/local/share/java/zmq.jar
  2. 本机库,(libjzmq.dylib 或 libjzmq.dll 或 libjzmq.so)

有关详细信息,请参阅http://zeromq.org/bindings:java

为了避免配置麻烦,我相信你可以检查如何嵌入原生库。当“org.zeromq.ZMQ”类初始化自己时,它会首先尝试加载嵌入式库,

static {
       // if no embedded native library, revert to loading from java.library.path
    if (!EmbeddedLibraryTools.LOADED_EMBEDDED_LIBRARY)
        System.loadLibrary("jzmq");
}
于 2014-01-08T03:49:44.067 回答
0

或者,如果您不想使用本机库,而只想快速入门,您可以选择使用与 zeromq 库等效的 java,方法是将以下内容添加到您的 pom.xml

 <dependency>
    <groupId>org.zeromq</groupId>
    <artifactId>jeromq</artifactId>
    <version>0.5.2</version>
 </dependency>

有关差异的更多详细信息,您可以在此处参考已回答的问题:

有关 jeromq 版本的最新列表,请参见此处的 mvnrepository

于 2020-06-02T17:11:35.050 回答