请教高手关于C++调用java的方法,调试时 JNI_CreateJavaVM出错
代码如下:
#include <jni.h>
#include <stdlib.h>
void main(int argc, char *argv[], char **envp)
{
JavaVMOption options[2];
JavaVMInitArgs vm_args;
JavaVM *jvm;
JNIEnv *env;
long result;
jmethodID mid;
jfieldID fid;
jobject jobj;
jclass cls;
int asize;
options[0].optionString = ". ";
options[1].optionString = "-Djava.compiler=NONE ";
vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = 2;
vm_args.ignoreUnrecognized = JNI_FALSE;
result = JNI_CreateJavaVM(&jvm,(void **)&env, &vm_args);
if(result == JNI_ERR )
{
printf( "Error invoking the JVM ");
exit (-1);
}
cls = env-> FindClass( "ConnLDAP ");
if( cls == NULL )
{
printf( "can 't find class ConnLDAP\n ");
exit (-1);
}
env-> ExceptionClear();
mid=env-> GetMethodID(cls, "start ", "()V ");
env-> CallStaticObjectMethod(cls, mid);
jvm-> DestroyJavaVM();
return;
}
现在用VC60调试,
小弟有几个问题请教大侠:
1)为什么运行到JNI_CreateJavaVM出错?
2)我要调用的是同一目录下的ConnLDAP.java库中的start函数,是不是上面的写法?
------解决方案--------------------你好像缺了
jvm = new JavaVM();
env = new JNIEnv();
另外,你要调用 ConnLDAP.java 的 start 函数,这样写虽然没错,但是运行的时候 ConnLDAP.java 是没用的,应该有 ConnLDAP.class,而且,在“当前目录下”不一定管用,应该在 classpath 的路径内。
------解决方案--------------------web serivse