C语言调用java也是通过JNI实现的,Linux平台也就是引入libjvm.so动态链接库就可以。首先需要编写java类
public class Sample {
public static void test2() {
System.out.println("java打印的helloword");
}
}
这是非常简单的一个java类,里面就只有一个java方法。等下我们就要通过C来调用这个方法。jvm只认识class,首先得编译它,java Sample.java。在当前目录得到一个Sample.class的文件。这个文件等下会被我们的C程序加载。
然后编写C代码。
#include //引入jni的头文件,下面加载类和调用类的方法都是通过jni里面的函数实现的
#include
int main()
{
JavaVMOption options[1];
JNIEnv *env;
JavaVM *jvm;
JavaVMInitArgs vm_args;
long status;
jclass cls;
jmethodID mid;
jint square;
jboolean not;
options[0].optionString = "-Djava.class.path=."; //设置classpath
memset(&vm_args, 0, sizeof(vm_args));
vm_args.version = JNI_VERSION_1_2;
vm_args.nOptions = 1