我正在开发一个JNI应用程序。它是一个调用一些Java方法的C程序。
我是根据一些互联网示例写的。
首先,我在Eclipse Indigo中创建了一个简单的示例(它在“默认包”中创建了Java文件)。然后我在C代码中使用了类似的东西:
options.optionString = "-Djava.class.path=/home/elias/workspace/Funciones/bin";
一切正常,但后来我重新制作了Java proyect,将Java代码放在名为“Funciones”的软件包中,所以我修改为:
options.optionString = "-Djava.class.path=/home/elias/workspace/Funciones/bin/Funciones";
但是现在我没有工作......我认为这是我在类路径中出错的地方。
有人能帮助我吗?
感谢。
答案 0 :(得分:3)
您希望类路径指向包含您正在使用的顶级软件包的目录(或目录或jar
文件),而不是在软件包中。所以,如果您的代码布局如下:
~/Funciones/bin/
|
>----Funciones
| |
| >----Funciones.class – this is the class Funciones.Funciones
|
>----some other package
|
:
您需要将~/Funciones/bin
添加到类路径中。要查找该类,您需要使用其fully qualified name - 前缀为包名的类名:
Class clsFunciones = Class.forName("Funciones.Funciones");
或者,在JNI中,class descriptor:
jclass clsFunciones = (*env)->FindClass(env, "Funciones/Funciones");