c++调用Java函数问题
现在有一个Java函数,如下:
[java]
01.public boolean Connect(String hostname, int port, String username,
02. String password) throws IOException {
03. ftpClient.connect(hostname, port);
04. System.out.println("正在连接到服务器" + hostname + ".........");
05. ftpClient.setControlEncoding("GBK");
06. if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
07. if (ftpClient.login(username, password)) {
08. System.out.println("登陆成功");
09. return true;
10. } else
11. System.out.println("登陆失败!");
12. }
13. disConnect();
14. return false;
15. }
用到的jar包为commons-net-3.3。我用如下代码调用,结果不对,没有连接,不知道问题出在哪,请教各位大神了。
[cpp]
01.JavaVMOption options[1];
02.JNIEnv *env; //表示JNI执行环境
03.JavaVM *jvm; //指向JVN的指针,用来创建、初始化、销毁JVM
04.JavaVMInitArgs vm_args; //用来初始化JVM的各种参数
05.long status;
06.jclass cls;
07.jmethodID mid;
08.jboolean not;
09.jobject obj;
10.options[0].optionString = "-Djava.class.path=commons-net-3.3.jar;.;";
11.//设置JVM初始化参数
12.vm_args.version = JNI_VERSION_1_2;
13.vm_args.nOptions = 1;
14.vm_args.options = options;
15.status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);//创建JVM,成功返回0,失败返回JNI_ERR
16.f(status!=JNI_ERR){
17. cls=env->FindClass("ftpTest/TestFtp");
18. if(cls!=0){
19. mid=env-GetMethodID(cls,"Connect","(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Z");
20.
21. if(mid!=0){
22. not=env->CallBooleanMethod(cls,mid,"127.0.0.1", 2121, "cq", "123");
23. if(not)
24. std::cout<<"连接成功"<<std::endl;
25. }
26. }
27. jvm->DestroyJavaVM();
28.
29.}
请教各位大神了。