1

我在 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;

我该如何解决这个错误?

4

2 回答 2

0

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

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

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

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

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

于 2012-07-26T10:08:41.560 回答
0

这些行取自来自 SUN 站点的 Getting Stated JNI

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

LD_LIBRARY_PATH=.
export LD_LIBRARY_PATH
于 2012-07-26T07:45:45.217 回答