linux下使用jni实现c++调用java程序(2)找不到java类的问题
来源:互联网 发布:手机网页翻译软件 编辑:程序博客网 时间:2024/04/30 01:24
初用java和jni使用,很多地方出现错误,最恶心的错误就是:
A fatal error has been detected by the Java Runtime Environment.....
或者是提示:
find java class error!
这是因为c++程序没有找到需要调用的java class文件。
如果使用jni找不到java类的时候,一般问题出现在以下方面:
(1)jclass cls = env->FindClass("tdb/queryTDB"); //设置java类路径,tdb文件夹下的queryTDB.class,注意类不要加.class
(2)java文件中package有没有指定:package tdb;,如果指定了java文件中的路径是否都是加上了package的路径:String directory = "./tdb/CompProfileOntologyTDB";
(3)还需要别的jar包,但没有在options(jvm启动参数)中设置!
下面主要介绍的是问题1和问题2,这两类问题一粗心就有可能造成
package用于指定java文件所在的包,如果test.java指定了包:package tdb;,编译运行程序应该如下:
[root@QAServer jena_query]# cd tdb/
[root@QAServer tdb]# javac testTDB.java
[root@QAServer tdb]# java testTDB
这时java文件的底层路径应该在java文件的上一层,也就是说:
(1)java文件中的所有目录都应加上一个tdb/,才能找到所需路径:
String directory = "tdb/CompProfileOntologyTDB" ;
(2)java文件编译后,运行必须在java文件的上一层目录:java tdb/test,否则会提示找不到class;
如果test.java中没有指定包,则编译运行程序应该如下:
[root@QAServer tdb]# javac testTDB.java
[root@QAServer tdb]# cd ..
[root@QAServer jena_query]# java tdb/testTDB
这时java文件的底层路径就在java文件所在层,也就是说:
(1)java文件中的所有目录是不需要加tdb/的
(2)运行class时必须就在java文件所在目录下
所以:
在c++调用cpp所在文件夹里面的java程序时,例如
jenaQuery.cpp调用tdb文件夹中的queryTDB.class
首先在queryTDB.java中指定package tdb;;然后在queryTDB.java文件中就可以不在用的路径的时候加上一个tdb/了;否则就会出现找不到class的错误!
- linux下使用jni实现c++调用java程序(2)找不到java类的问题
- linux下使用jni实现c++调用java程序(3)多线程jni使用
- 【Java】Java调用C/C++程序的实现(jni)
- Java的JNI:使用Java调用C程序(入门)
- Java的JNI:使用Java调用C程序(一)
- linux下java 调用 c jni 实现 HelloWorld
- linux下使用jni实现c++调用java程序(1)准备工作
- linux下使用jni实现c++调用java程序(4)DestroyJavaVM出现错误
- linux下使用jni实现c++调用java程序(5)参考资料总结
- jni实现C语言调用Java程序
- Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- 使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- 关于JNI的使用(实战linux平台下java调用本地c语言方法)
- java JNI调用c程序
- android studio 调用jni,实现Java调用C语言程序
- Java调用C++: JNI的使用入门
- jni的使用(java调用c++)
- Linux下,JAVA通过JNI调用CUDA程序
- 奇文共欣赏 疑义相与析
- 网站超链接和图片提示效果(jquery)
- matlab 产生高斯噪声和高斯白噪声方法
- 带粉离港
- (译)碰撞检测和收集物品:如何使用cocos2d制作基于tiled地图的游戏:第二部分
- linux下使用jni实现c++调用java程序(2)找不到java类的问题
- ZJUT 1208 排列对称串
- (译)加入敌人和战斗:如果使用cocos2d制作基于tiled地图的游戏:第三部分
- 分层遍历二叉树
- Jfreechart柱形图详细设置(转)
- form表单字段元素对象实例(二)— —用户名和密码争夺焦点,造成死锁事件
- pku Graph Coloring
- 很有用的Html 显示特殊符号
- NSAssert