【发布时间】:2019-06-15 03:50:10
【问题描述】:
我正在开发一个需要使用 .so 库(ubuntu 18.04)的项目,当我将我的 java 代码放在 /src 文件夹中时一切正常(我使用的是 IntelliJ Idea),但是在我移动之后我的代码进入一个命名包(smutil),它会导致一些错误,如“线程“主”中的异常 java.lang.UnsatisfiedLinkError: smutil.GmSSL.digest(Ljava/lang/String;[B)[B"
这是我的代码
package smutil;
public class GmSSL {
public native String[] getVersions();
public native String[] getCiphers();
public native String[] getDigests();
public native String[] getMacs();
public native String[] getSignAlgorithms();
public native String[] getPublicKeyEncryptions();
public native String[] getDeriveKeyAlgorithms();
public native byte[] generateRandom(int length);
public native int getCipherIVLength(String cipher);
public native int getCipherKeyLength(String cipher);
public native int getCipherBlockSize(String cipher);
public native byte[] symmetricEncrypt(String cipher, byte[] in, byte[] key, byte[] iv);
public native byte[] symmetricDecrypt(String cipher, byte[] in, byte[] key, byte[] iv);
public native int getDigestLength(String digest);
public native int getDigestBlockSize(String digest);
public native byte[] digest(String algor, byte[] data);
public native String[] getMacLength(String algor);
public native byte[] mac(String algor, byte[] data, byte[] key);
public native byte[] sign(String algor, byte[] data, byte[] privateKey);
public native int verify(String algor, byte[] digest, byte[] signature, byte[] publicKey);
public native byte[] publicKeyEncrypt(String algor, byte[] in, byte[] publicKey);
public native byte[] publicKeyDecrypt(String algor, byte[] in, byte[] privateKey);
public native byte[] deriveKey(String algor, int keyLength, byte[] peerPublicKey, byte[] privateKey);
public native String[] getErrorStrings();
static {
System.loadLibrary("gmssljni");
}
}
【问题讨论】:
-
尝试在模块的 dependencies tab 的模块依赖项列表中添加本机 .dll,参见提供的链接中的依赖项列表说明。
标签: java intellij-idea java-native-interface unsatisfiedlinkerror .so