在运行时获得Java.lang.unsatisfiedlinkerror

Getting java.lang.UnsatisfiedLinkError at runtime

本文关键字:lang unsatisfiedlinkerror Java 运行时      更新时间:2023-10-16

我正在尝试使用JNI从Java类访问C 方法。我可以编译(无论是在日食还是在命令行中)我的Java类罚款,但是在运行时执行课程时,我得到了:

线程中的例外" main" java.lang.unsatisfiedlinkerror:com.domain.services.callserviceapis.createsession()i 在com.domain.services.callserviceapis.createsession(本机方法) 在com.domain.services.callserviceapis.main(callerviceapis.java:18)

Java代码如下:

package com.domain.services;
public class CallServiceAPIS {
    static {
        System.loadLibrary("service.client");
    }
    public native int createSession();
    public static void main(String[] args) {
        System.out.println(System.getProperty("java.library.path"));
        new CallServiceAPIS().createSession();
    }
}

我包括了java.library.path的打印输出,只是为了确保它指向C 库的正确位置,并且是。我还尝试在日食环境中设置LD_Library_Path。但都没有工作。

请注意,系统。loadLibrary调用工作正常,因为1)代码编译和2)错误发生在第18行,这是新的callerviceapis调用。

C 代码:

 int createSession(const PosServiceInfo info, const SessionArgs& args, Domain::UUID& uuidSession)
    {
        return int::undefined;
    }

有什么想法?

没关系。我意识到我正在错误地使用JNI接口。我认为您可以使用现有的C 源加载现有的C 库。但是您基本上必须重写现有代码以使用JNI接口。