[英]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,你需要兩件事,
有關詳細信息,請參閱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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.