2

我正在开发一个 JNI 应用程序。它是一个调用一些 Java 方法的 C 程序。

我是按照一些互联网示例编写的。

首先,我在 Eclipse Indigo 中创建了一个简单的示例(它在“默认包”中创建了 Java 文件)。然后我在 C 代码中使用了类似的东西:

options.optionString = "-Djava.class.path=/home/elias/workspace/Funciones/bin";

一切正常,但后来我重新制作了 Java 项目,将 Java 代码放在一个名为“Funciones”的包中,所以我修改为:

options.optionString = "-Djava.class.path=/home/elias/workspace/Funciones/bin/Funciones";

但是现在我不工作了......我想这是我在类路径中的错误。

有人能帮助我吗?

谢谢。

4

1 回答 1

3

您希望类路径指向jar包含您正在使用的顶级包的目录(或目录或文件),而不是包。因此,如果您的代码布局如下:

~/Funciones/bin/
|
>----Funciones
|    |
|    >----Funciones.class – this is the class Funciones.Funciones
|
>----some other package
|
:

你需要添加~/Funciones/bin到你的类路径。要查找类,您需要使用它的完全限定名——以包名为前缀的类名:

Class clsFunciones = Class.forName("Funciones.Funciones");

或者,在 JNI 中,类描述符

jclass clsFunciones = (*env)->FindClass(env, "Funciones/Funciones");
于 2012-07-09T15:16:49.763 回答