java - 不能使用 jni 从 eclipse 生成的 dll

标签 java c++ c eclipse java-native-interface

我已经使用命令提示符用 jni 生成了一个 dll 文件。我可以使用“java helloWorld”命令运行下面的代码。但我不能从 eclipse 中做到这一点。当我运行该程序时出现错误,内容为:

线程“main”中的异常 java.lang.UnsatisfiedLinkError:java.library.path 中没有 native_library 在 java.lang.ClassLoader.loadLibrary(未知来源) 在 java.lang.Runtime.loadLibrary0(未知来源) 在 java.lang.System.loadLibrary(未知来源) 在 helloWorld.(helloWorld.java:6)

我已经为 native_library 使用了绝对路径,如下所示。它有什么问题?

Hello World .java:

public class helloWorld {

    static{     
        System.loadLibrary("native_library");
        System.load("C:/javaworkspace/helloWorld/src/native_library.dll");
        }   

    public static native void writeout(String ss);

    public static void main(String[] args) {    
        String sdf="Hello World";   
        writeout(sdf);              
    }
}

native_library.c:

#include <stdio.h>
#include "helloWorld.h"

JNIEXPORT void JNICALL Java_helloWorld_writeout
  (JNIEnv * env, jclass clazz, jstring str2)
  {
    const char *nativeString = (*env)->GetStringUTFChars(env, str2, 0);

    printf("%s \n",nativeString);

    (*env)->ReleaseStringUTFChars(env, str2, nativeString);
  }

最佳答案

在我看来,硬编码 DLL 路径并不是最好的主意。请改用命令行参数:

java -Djava.library.path=<path_to_lib_directory>

对于 Eclipse:打开您的构建路径(右键单击项目 >“构建路径”>“配置构建路径...”)并设置“ native 库位置”属性。

关于java - 不能使用 jni 从 eclipse 生成的 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15247803/

相关文章:

java - bean 的空属性会被插入到 MongoDB 中吗?

c++ - 链接器错误(SDL、OpenGL)

c - 释放指向结构的指针导致程序获得 "stuck"

c - 顺序文件写入的 posix_fadvise() 参数是什么?

Java 图表编辑器

java - 如果找到字符,则忽略字符后的字符串

java - 通过 AJAX 将数组 POST 到 Spring 的 Controller

c++ - Swig -includeall 除了...

c++ - 如何最小化结构类型的内存使用?

c - 为什么这个循环没有被优化掉?