600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > java findclass FindClass 找不到类解决方法

java findclass FindClass 找不到类解决方法

时间:2024-02-10 19:56:36

相关推荐

java findclass FindClass 找不到类解决方法

FindClass 找不到类

c++调用java

编译环境linuxUbuntu13.10

JDK信息

root@master:/usr/java#echo$JAVA_HOME

/usr/java/jdk1.7.0_65

root@master:/usr/java#echo$CLASSPATH

.:/usr/java/jdk1.7.0_65/lib:/usr/java/jdk1.7.0_65/jre/lib:

root@master:/#echo$JAR_HOME

/usr/java/jdk1.7.0_65/jre

root@master:/#echo$PATH

/usr/java/jdk1.7.0_65/bin:/usr/java/jdk1.7.0_65/jre/bin

[code=c]

在home目录下建议个com目录,然后再在com目录下建一个test目录

[code=c]

root@master:/home/com/test#pwd

/home/com/test

编写一个java程序

root@master:/home/com/test#catMyAdd.java

packagecom.test;

publicclassMyAdd.j{

publicstaticintadd(inta,intb)

{

returna+b;

}

}

root@master:/home/com/test#javacMyAdd.java

root@master:/home/com/test#ls

MyAdd.classMyAdd.java

这里需要用javah生成MyAdd.h文件吗?

然后写一个test.cpp文件

#include

#include

intmain()

{

JavaVM*jvm=(JavaVM*)0;

JNIEnv*env=(JNIEnv*)0;

JavaVMInitArgsvm_args;

longstatus;

jclasscls;

jmethodIDmid;

jintsquare;

jbooleanjnot;

jobjectjobj;

vm_args.version=JNI_VERSION_1_6;

vm_args.options=(JavaVMOption*)0;

vm_args.ignoreUnrecognized=JNI_FALSE;

status=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);

if(status!=JNI_ERR)

{

cls=env->FindClass("com/test/MyAdd");

if(cls!=0)

{

printf("findjavaclasssuccess\n");

mid=env->GetMethodID(cls,"","(V)");

if(mid!=0)

{

jobj=env->NewObject(cls,mid);

printf("initok!\n");

}

//调用add函数

mid=env->GetStaticMethodID(cls,"add","(II)I");

if(mid!=0)

{

square=env->CallStaticIntMethod(cls,mid,5,5);

printf("square:%d\n",square);

}

}

else

{

fprintf(stderr,"FindClassfailed!\n");

}

jvm->DestroyJavaVM();

fprintf(stdout,"JavaVMdestry!\n");

return0;

}

else

{

printf("createjavajvmfail\n");

return-1;

}

}

编译

root@master:/home/com/test#catmake.sh

g++-otest\

-I/usr/java/jdk1.7.0_65/include\

-I/usr/java/jdk1.7.0_65/include/linux\

-L/usr/bin/java\

-L/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/servetest.cpp-ljvm

root@master:/home/com/test#ls

MyAdd.classMyAdd.javamake.shtesttest.cpp

root@master:/home/com/test#./test

FindClassfailed!

JavaVMdestry!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。