由包名引起的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;/*代码的其余部分*/