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