JNI加载jar依赖

时间:2015-10-16 20:34:40

标签: java c++ java-native-interface jnienv

我正在尝试使用JNI在我的C ++程序中加载以下java类:

Dim WF as WorksheetFunction

这取决于log4j-1.2.16.jar

这是我的C ++代码:

Dim WF as Application.WorksheetFunction

我已将HelloWorld.jar放在我的C ++应用程序的根文件夹中。当它尝试加载hello_world_class时,抛出以下异常:

Dim dic1 as Dictionary
Dim dic1 as Scripting.Dictionary

JNI找不到log4j依赖项,因为它不在HelloWorld.jar中。我试过将它放在一个lib文件夹和HelloWorld.jar所在的文件夹中,但它没有用。我需要在哪里放置log4j.jar以便JNI可以对其进行重新定位并加载它?

非常感谢,我是jni的新手,所以请在答案中说清楚。我整天都在犯这个错误T.T

1 个答案:

答案 0 :(得分:0)

您要做的就是在选项内传递JAR文件的位置。您可以执行以下操作:

options[0].optionString = "-Djava.class.path=./target:../target:./jar:./jar/log4j-api-2.12.1.jar:./jar/log4j-core-2.12.1.jar";

请记住,您可能还需要log4j2.xml(对于log4j-2.12.1)。为了确保您的配置文件可被发现,请将目录(以及文件)也添加到类路径中。

您可以在此处找到完整的示例代码:https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo060