Java可以通过JNI(Java Native Interface)调用C语言的so动态库。
以下是简单的步骤:
1. 编写C语言代码并编译成so动态库文件。
2. 在Java中定义native方法,声明需要调用的C语言函数。
3. 使用javac编译Java类文件,并使用javah生成头文件。
4. 在C语言代码中实现Java定义的native方法。
5. 将C语言代码编译成so动态库文件。
6. 在Java程序中加载so动态库文件,并调用native方法。
示例代码:
C语言代码:
```c
#include
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj) {
printf("Hello World!\n");
}
```
Java代码:
```java
public class HelloWorld {
static {
System.loadLibrary("HelloWorld");
}
private native void print();
public static void main(String[] args) {
new HelloWorld().print();
}
}
```
编译Java类文件:
```
javac HelloWorld.java
```
生成头文件:
```
javah -jni HelloWorld
```
编译C语言代码:
```
gcc -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -shared -o libHelloWorld.so HelloWorld.c
```
运行Java程序:
```
java HelloWorld
```
输出结果:
```
Hello World!
```