Я написал класс Java, который обращается к методу в Cll через Jni.
Но я получаю следующую ошибку в Windows.
java.lang.UnsatisfiedLinkError:
Server.getNetworkDiagram (Ljava / языки / String; Ljava / языки / String; Ljava / языки / String;) Ljava / языки / String;
Думаю, она может загрузить библиотеку.
Также я собираю .dll (для windows) и .so (для linux) из набора общих файлов C
Это работает с .so файлом, и я не получаю никакой ошибки.
Не могли бы вы мне помочь?
Как мне здесь отладить?
Спасибо,
Sudarshan
Не уверен, что это ошибка, потому что она работает в Linux.
Ниже приведены заголовочный файл и файл Java.
========
Файл JNI
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Server */
#ifndef _Included_Server
#define _Included_Server
#ifdef __cplusplus
extern "C" {
#endif
#undef Server_GETNETWORK
#define Server_GETNETWORK 1L
#undef Server_SETLEVEL
#define Server_SETLEVEL 2L
/*
* Class: Server
* Method: getNetworkDiagram
* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_Server_getNetworkDiagram
(JNIEnv *, jobject, jstring, jstring, jstring);
/*
* Class: Server
* Method: setLevelQuery
* Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_Server_setLevelQuery
(JNIEnv *, jobject, jstring, jstring, jstring, jint, jint, jstring);
#ifdef __cplusplus
}
#endif
#endif
=========
Java File
=========
public class Server
{
public native String getNetworkDiagram(String domain, String dest, String secret);
public void test()
{
String domain = "domain1";
String host = "2.2.2.30";
String secret = "test";
System.loadLibrary("libewapi");
String result = this.getNetworkDiagram(domain, host, secret);
}
public static void main(String argv[]) throws Exception
{
Server server = new Server();
server.test();
}
}