我正在尝试使用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
答案 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