Java JNA/JNI调用C
简介:JNA(Java Native Access)是建立在JNI(Java Native Interface)技术基础之上的一个Java类库,是Sun公司推出的一种调用本地方法的技术,它使您可以方便地使用java直接访问动态链接库中的函数。
1. pom.xml Maven依赖
<dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>5.6.0</version> </dependency>
2. Java调用so文件
package com.ruhuanxingyun.jna; import com.sun.jna.Library; import com.sun.jna.Native; public class JNADllCall { public interface PdfModel extends Library { // Native.synchronizedLibrary 阻止多线程同时访问本地代码 PdfModel INSTANCE = (PdfModel) Native.synchronizedLibrary( Native.loadLibrary( ClassLoader.getSystemClassLoader().getResource("").getPath().replaceAll("%20"," ").replaceFirst("/","") + "static/libPdfModel.so", PdfModel.class) ); // 声明将要调用的方法,此方法为so文件中的c语言函数 -> char* train(char* tranFilePath, Float fMinConf) String train(String tranFilePath, Float fMinConf); } }