如果我把它放在默认包中,我的程序运行良好。一旦我把它放在一个特定的包中,它就不起作用了。我得到以下错误消息:
Error Message: Exception in thread "main" java.lang.**UnsatisfiedLinkError**:
mypackage.my_java_class_name.nativeUpload(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
编译:
javac mypackage/my.java
javah -jni mypackage.my_java_class_name
gcc -shared -fpic -o mylib.so -I/Path_of_jdk/Include -I/Path_of_jkd/Include/linux my.c
运行:
java -Dava.library.path=/path_of_myprogram/
答案 0 :(得分:0)
让我通过 Luiggi Mendoza 扩展评论。
Java对 javah 命令生成的 .h 文件不感兴趣。它在 my.c 文件中查找名为 Java_mypackage_my_1java_1class_1name_nativeUpload 的C函数。 (注意_1
,这是您班级名称中_
的“翻译”结果。
单独使用 javah 无法解决此命名问题。