老兄:我要加载Java虚拟机,调用class的方法啊!
解决方案 »
- 这是什么错误???
- 加密算法,涉及到字符串和二进制的转换,请教
- 初学者,小问题。。。顺便散分。。
- Class.getResource用法
- 怎么会这样 编译不通过 奇怪了 求教啊
- 有没有简单的Java的入门电子书?
- Vector和数组存储对象时的效率问题
- 怎样对frame,panel等容器的外形进行修改.
- 关于ant的build.xml的文件,谁能给一个比较复杂的例子啊!
- 在eclipse中运行正常,生成可运行jar包,双击运行不正常 用java -jar运行正常
- 我想知道,在linux下架站tomcat是怎么画出如股票K线图似的图片的?
- 高手请帮忙!!JAVAMAIL开发接收中文附件问题,解决再送100
哪为高手加载过Java虚拟机,有可运行的代码吗?//加载Java虚拟机
BOOL InvokeJVM()
{
char classpath[4096];
//char envpath[4096];
//char value[4096];
JDK1_1InitArgs vm_args;
jint res = -1;
//jmethodID mid;
HINSTANCE hLib = NULL;
::memset(classpath,0,sizeof(classpath));
char USER_CLASSPATH[1024];
//获取当前路径
getUSER_CLASSPATH(USER_CLASSPATH);
//设置环境变量
/*memset(envpath,0,sizeof(envpath));
memset(value,0,sizeof(value));
::GetEnvironmentVariable("PATH",envpath,sizeof(envpath));
boxerror(envpath);
::GetCurrentDirectory(sizeof(curdir),curdir);
sprintf(value,"%s%s;",envpath,curdir);
::SetEnvironmentVariable("PATH",value); memset(envpath,0,sizeof(envpath));
::GetEnvironmentVariable("PATH",envpath,sizeof(envpath));
boxerror(envpath);*/ char msg[1024];
sprintf(msg,"USER_CLASSPATH:%s",USER_CLASSPATH);
boxerror(msg); P_JNI_GetDefaultJavaVMInitArgs pfnGetDefaultJavaVMInitArgs = NULL;
P_JNI_CreateJavaVM pfnCreateJavaVM = NULL;
//printf("Loading Library .... \n");
hLib = LoadLibrary("javai"); if(hLib == NULL) {
boxerror("Unable to Load Library.");
return FALSE;
}
pfnGetDefaultJavaVMInitArgs = (P_JNI_GetDefaultJavaVMInitArgs) GetProcAddress(hLib, "JNI_GetDefaultJavaVMInitArgs"); // IMPORTANT: specify vm_args version # if you use JDK1.1.2 and beyond
vm_args.version =0x00010001; // Get the default arguments
if(pfnGetDefaultJavaVMInitArgs != NULL)
(*pfnGetDefaultJavaVMInitArgs)(&vm_args); //char msg[1024];
//sprintf(msg,"vm_args.classpath:%s",vm_args.classpath);
//boxerror(msg); // Append USER_CLASSPATH to the end of default system class path
if(vm_args.classpath != NULL)
sprintf(classpath, "%s%c%s", vm_args.classpath, PATH_SEPARATOR, USER_CLASSPATH);
else
sprintf(classpath, "%s", USER_CLASSPATH);
//char tt[]="D:\\PQ-SYSTEM\\TestDMTB4\\jars\\rt.jar;D:\\PQ-SYSTEM\\TestDMTB4\\jars\\i18n.jar;.;";
vm_args.classpath =USER_CLASSPATH;
// Store the function pointer for creating the VM
pfnCreateJavaVM = (P_JNI_CreateJavaVM) GetProcAddress(hLib, "JNI_CreateJavaVM"); // Create the Java VM /
if(pfnCreateJavaVM != NULL)
res = (*pfnCreateJavaVM)(&jvm,&env,&vm_args);
if (res < 0) {
char err[100];
sprintf(err,"Can't create Java VM .return:%d",res);
boxerror(err);
return FALSE;
}
//load sa.class
cls = env->FindClass( "PQAgent");
if (cls == 0) {
boxerror("Can't find PQAgent.class");
return FALSE;
}
obj=env->AllocObject(cls);
if (obj == 0){
boxerror("Can't create PQAgent obj");
return FALSE;
}
boxerror("load JVM OK!");
return TRUE;
}