由包名引起的java.lang.UnsatifiedLinkError
我的程序运行良好,如果我只是把它放在默认包中。一旦我把它放在一个特定的包中,它就不起作用了。我得到以下错误消息:由包名引起的java.lang.UnsatifiedLinkError,java,java-native-interface,package,Java,Java Native Interface,Package,我的程序运行良好,如果我只是把它放在默认包中。一旦我把它放在一个特定的包中,它就不起作用了。我得到以下错误消息: 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;
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;
- 操作系统:Ubuntu 12.04 32位
- Java版本:openjdk 7
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/
让我进一步阐述一下作者的评论 Java对由javah命令生成的.h文件不感兴趣。它在my.C文件中查找名为Java\u mypackage\u my\u 1java\u 1class\u 1name\u nativeUpload的C函数。(注意
\u 1
,这是以班级名义“翻译”\u
的结果)
您无法单独使用javah解决此命名问题。提供一段简短的代码来复制您的问题。另外,请确保使用
package the.package.im.using;/*代码的其余部分*/