【发布时间】:2017-06-09 07:06:10
【问题描述】:
我有 file.c,我想将它包含到我的 Java 应用程序中。
我已经创建了JNI 模块并将其包含在nar-maven-plugin 的应用程序中。
这是它的配置:
<plugin>
<groupId>com.github.maven-nar</groupId>
<artifactId>nar-maven-plugin</artifactId>
<version>3.5.2</version>
<extensions>true</extensions>
<configuration>
<libraries>
<library>
<type>jni</type>
<narSystemPackage>my.package.nativelib</narSystemPackage>
</library>
</libraries>
</configuration>
</plugin>
在我运行mvn clean install 之后,它会创建libmy-native-lib.so 文件。
我设法从 Java 访问 C 函数,但有一个问题:file.c 使用外部 libexternal.so 库(作为 #include "external.h" 包含在 file.c 中),当它从 @987654331 访问任何函数时@ 它因“符号查找错误”而失败。
我尝试过使用
static {
System.load("/usr/lib/libexternal.so");
}
和
static {
System.loadLibrary("external");
}
但似乎没有任何效果。
那么如何将外部 *.so 库添加到 JNI 项目中?
【问题讨论】:
标签: java c maven java-native-interface shared-libraries