在Win64下经过jni启动jvm并运行java类: java
jdk: jdk7_45(x64) c++
vs2010 64位命令行工具, 用来编译咱们写的C++,就是这个: 程序员
环境变量设置: jvm
java代码(待执行): 工具
public class HelloInvocation{ public static int add(int a, int b) { return a+b; } }c++代码:
#include <jni.h> #include <stdlib.h> #include <string.h> #ifdef _WIN32 #define PATH_SEPARATOR ';' #else #define PATH_SEPARATOR ':' #endif int main(){ JavaVMOption options[1]; JNIEnv *env; JavaVM *jvm; JavaVMInitArgs vm_args; long status; jclass cls; jmethodID mid; jint result; options[0].optionString = "-Djava.class.path=."; memset(&vm_args, 0, sizeof(vm_args)); vm_args.version = JNI_VERSION_1_6; vm_args.nOptions = 1; vm_args.options = options; status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); if (status != JNI_ERR){ cls = env->FindClass("HelloInvocation"); if (cls != 0){ mid = env->GetStaticMethodID(cls, "add", "(II)I"); if (mid != 0){ result = env->CallStaticIntMethod(cls, mid, 4, 7); printf("Hi, 4 + 7 = %d\n", result); } } jvm->DestroyJavaVM(); return 0; } else{ return -1; } }做为一个看到这里的程序员,你应该很容易理解上面的代码,我很少说;
拿出你的Vs2010命令行工具, 编译吧, 运行吧(编译要加入咱们java jvm的库文件依赖哈): spa