小编Vle*_*mix的帖子

Linux上的JNI问题:无法打开共享对象文件

我已经在这里看到了这个问题,尝试了提议的修复,但到目前为止我没有成功.我有相当多的Java经验,但JNI很久以前,从来没有在Linux上做过...

我正在尝试在Linux上运行一个简单的HelloWorld JNI应用程序.

小java文件:

class HelloWorld {

    private native void print();

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

    static {
        System.out.println(System.getProperty("java.library.path"));
        System.loadLibrary("HelloWorld");
    }

}
Run Code Online (Sandbox Code Playgroud)

小C文件:

#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
    printf("Hello World!\n");
    return;
}
Run Code Online (Sandbox Code Playgroud)

通过以下方式编译C文件:

gcc -shared -Wall -fPIC HelloWorld.c -I/usr/lib/gcc/x86_64-redhat-linux/3.4.3/include/ -o libHelloWorld.so
Run Code Online (Sandbox Code Playgroud)

运行应用程序:

java HelloWorld
Run Code Online (Sandbox Code Playgroud)

要么

java -Djava.library.path=/home/nxp40954/jnitesting/. HelloWorld
Run Code Online (Sandbox Code Playgroud)

但没有好处,得到一个:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/nxp40954/jnitesting/libHelloWorld.so: /home/nxp40954/jnitesting/libHelloWorld.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

奇怪,因为实际上有一个/home/nxp40954/jnitesting/libHelloWorld.so …

linux java-native-interface

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

java-native-interface ×1

linux ×1