簡體   English   中英

使用 Maven 安裝 Java ZeroMQ 綁定 (jzmq),缺少本機代碼庫

[英]Installing the Java ZeroMQ binding (jzmq) using Maven, Missing Native Code Library

我正在嘗試從 Maven 存儲庫 ( http://search.maven.org/#search|ga|1|a%3A%22jzmq%22 ) 安裝 jzmq,Java ZeroMQ 綁定。 當作為依賴項添加到我的 pom.xml[1] 時,Maven 會按預期下載主 jar,它提供了一個 Java 庫。 除了主庫之外,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>

您需要告訴 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

為了避免配置麻煩,我相信你可以檢查一下如何嵌入原生lib。 當類“org.zeromq.ZMQ”初始化自己時,它會首先嘗試加載嵌入的庫,

static {
       // if no embedded native library, revert to loading from java.library.path
    if (!EmbeddedLibraryTools.LOADED_EMBEDDED_LIBRARY)
        System.loadLibrary("jzmq");
}

或者,如果您不想使用本機庫,而只想快速入門,則可以通過將以下內容添加到 pom.xml 中來選擇使用與 zeromq 庫等效的 java

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

有關差異的更多詳細信息,您可以在此處參考已回答的問題:

有關 jeromq 版本的最新列表,請參閱此處的 mvnrepository

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM