C++通过JVM调用jar包


 1 #include "jni.h"  
 2 #include "windows.h"  
 3 #include "stdafx.h"  
 4 typedef jint (WINAPI *_CreateJavaVM)(JavaVM **, void **, void *);  
 5 int _tmain(int argc, _TCHAR* argv[])  
 6 {  
 7     int res;  
 8     JavaVMInitArgs vm_args;  
 9     JavaVMOption options[3];  
10     JavaVM *jvm;  
11     JNIEnv *env;  
12     /*设置初始化参数*/  
13     options[0].optionString = "-Djava.compiler=NONE"; //Disabled JIT  
14     options[1].optionString = "-Djava.class.path=.;hello.jar";  
15     options[2].optionString = "-verbose:NONE";  
16     vm_args.version = JNI_VERSION_1_6;  
17     vm_args.nOptions = 3;  
18     vm_args.options = options;  
19     vm_args.ignoreUnrecognized = JNI_TRUE;  
20     // Load jvm.dll  
21     HINSTANCE hInstance = LoadLibrary(L"C://Program Files//Java//jre6//bin//client//jvm.dll");  
22     if (hInstance == NULL)  
23         return false;  
24     _CreateJavaVM m_CreateJavaVM = (_CreateJavaVM)GetProcAddress(hInstance, "JNI_CreateJavaVM");  
25     res = (*m_CreateJavaVM)(&jvm, (void**)&env, &vm_args);  
26     if (res < 0)  
27         return -1;  
28     // Find the class  
29     jclass HelloClass = env->FindClass("app/Hello");  
30     // Find the main method id  
31     jmethodID Hello_main =   
32     env-> GetStaticMethodID(HelloClass, "main", "([Ljava/lang/String;)V");  
33     // Call the main method.  
34     env->CallStaticVoidMethod(HelloClass, Hello_main);  
35     jvm->DestroyJavaVM();  
36     FreeLibrary(hInstance);  
37     return 0;  
38 }  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM