Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux中的jni(Cent6):线程中的异常;“主要”;java.lang.UnsatifiedLinkError_Linker_Java Native Interface_Centos - Fatal编程技术网

linux中的jni(Cent6):线程中的异常;“主要”;java.lang.UnsatifiedLinkError

linux中的jni(Cent6):线程中的异常;“主要”;java.lang.UnsatifiedLinkError,linker,java-native-interface,centos,Linker,Java Native Interface,Centos,我现在与JNI合作 我做了以下几件事: 我制作了HelloJNI.java。它只是链接libhello.so库 static { System.loadLibrary("hello"); } # gcc -shared -fpic -o libhello.so -I/usr/java/jdk1.7.0_21/include -I/usr/java/jdk1.7.0_21/include/linux HelloJNI.c 像这样。当然我也有身体,但没什么特别的 然后我制作了类文件、C文件

我现在与JNI合作

我做了以下几件事:

  • 我制作了HelloJNI.java。它只是链接libhello.so库

    static {
      System.loadLibrary("hello");
    }
    
    # gcc -shared -fpic -o libhello.so -I/usr/java/jdk1.7.0_21/include -I/usr/java/jdk1.7.0_21/include/linux HelloJNI.c
    
  • 像这样。当然我也有身体,但没什么特别的

  • 然后我制作了类文件、C文件和头文件。 我命令

    #javac HelloJNI.java
    #javah -classpath /usr/guest/workspace/path/ -jni package.HelloJNI
    no errors till now.
    
  • 我打了个招呼

    static {
      System.loadLibrary("hello");
    }
    
    # gcc -shared -fpic -o libhello.so -I/usr/java/jdk1.7.0_21/include -I/usr/java/jdk1.7.0_21/include/linux HelloJNI.c
    
  • 当我在eclipse中运行这个项目时,错误如下所示

    Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)
        at java.lang.System.loadLibrary(System.java:1084)
        at org.owls.jni.HelloJNI.<clinit>(HelloJNI.java:7)
    
    javah -classpath /home/guest/workspace/.../src org.owls.HelloJNI.
    
    感谢您的阅读和您明智的解决方案:D

    • 有人谈论路径问题。但我不明白该把这条线放在哪里
    导出LD\u LIBRARY\u PATH=“/PATH/to/LIBRARY/”
    。可以从命令行执行此操作,也可以将其添加到bashrc中
    阅读和

    的好链接我自己解决了这个问题

    其原因是javah命令

    我确实喜欢下面

    Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)
        at java.lang.System.loadLibrary(System.java:1084)
        at org.owls.jni.HelloJNI.<clinit>(HelloJNI.java:7)
    
    javah -classpath /home/guest/workspace/.../src org.owls.HelloJNI.
    
    生成的头文件中的方法与我预期的不同

    我期待类似的事情

    JNIEXPORT JNICALL void Java_HelloJNI_say(JNIEnv* env, jobject j){}
    
    但下面是实际生成的

    JNIEXPORT JNICALL void Java_org_owls_HelloJNI_say(JNIEnv* env, jobject j){}
    
    这是我问题的主要原因

    尽管我把自己扔了出去,但非常感谢有人和我分享我的问题

    祝你今天愉快:D