运行JNI程序

时间:2012-07-26 07:44:49

标签: java-native-interface runtime-error

我在ubuntu中运行我的第一个程序。

但是当我尝试运行它时出错:

 public class HelloWorld {
 public native String nativeHelloWorld();    

 static {
     System.loadLibrary("HelloWorld");
 }

 public void print(){
 {
 String str = nativeHelloWorld();
 System.out.println(str);
 }  
 }


 public static void main(String[] args) {
     (new HelloWorld()).print();
      return;
 }
 }

发现了这个错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError:HelloWorld.nativeHelloWorld()Ljava/lang/String;

我该如何解决这个错误?

2 个答案:

答案 0 :(得分:0)

这些行取自Getting Stated JNI from SUN site

  

确保本机库位于其中一个目录中   本机库路径。如果您在Solaris系统上运行,则   LD_LIBRARY_PATH环境变量用于定义本机   图书馆路径。确保它包含目录的名称   包含libHelloWorld.so文件。如果是libHelloWorld.so文件   在当前目录中,您可以发出以下两个命令   在标准shell(sh)或KornShell(ksh)中设置   LD_LIBRARY_PATH环境变量正确:

LD_LIBRARY_PATH=.
export LD_LIBRARY_PATH

答案 1 :(得分:0)

对于在Android中运行JNI程序,您应该查看描述here的步骤,您将需要使用此命令构建本机代码

cd <ndk-root>/samples/hello-jni
<ndk_root>/ndk-build

成功构建后,您将获得此目录中的.so文件

\hello-jni\libs\armeabilib\hello-jni.so

假设您正尝试从SDK执行HelloJNi示例程序。一旦你在libs目录中获得了该文件,使用eclipse简单运行按钮运行项目,你将拥有你的HelloWorld :)。