- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经查看了 StackOverFlow 和其他搜索引擎中的 UnsatisfiedLinkError 帮助,但解决方案并不能解决问题,所以我将在这里说明。
我尝试对 PKCS11 DLL 库进行 JNI 调用,但收到以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.thotheolh.jche.NativeBridge.loadPKCS11Module(Ljava/lang/String;)V
at org.thotheolh.jche.NativeBridge.loadPKCS11Module(Native Method)
at org.thotheolh.jche.NativeBridge.load(NativeBridge.java:40)
at org.thotheolh.jche.NativeBridge.<init>(NativeBridge.java:29)
at org.thotheolh.jche.exception.test.PKCS11GenericTest.main(PKCS11GenericTest.java:27)
Java Result: 1
我用来执行以下“ native ”调用的 native 桥接片段:
NativeBridge.java
public class NativeBridge {
private String pkcs11Module;
private String pkcs11JavaWrapper = "libJPKCS11";
public NativeBridge(String pkcs11Module) throws IOException, NoSuchFieldException {
this.pkcs11Module = pkcs11Module;
load();
}
public void load() throws IOException, NoSuchFieldException {
System.loadLibrary(pkcs11JavaWrapper);
loadPKCS11Module(pkcs11Module);
}
public synchronized native void loadPKCS11Module(String location) throws IOException;
}
javah 生成的头文件片段:
JCHE.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_thotheolh_jche_NativeBridge */
#ifndef _Included_org_thotheolh_jche_NativeBridge
#define _Included_org_thotheolh_jche_NativeBridge
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_thotheolh_jche_NativeBridge
* Method: loadPKCS11Module
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_thotheolh_jche_NativeBridge_loadPKCS11Module
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
C 文件片段:
JCHE.c
#include <jni.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include "JCHE.h"
const char *pkcs11ModuleFileLoc;
HMODULE pkcs11;
JNIEXPORT void JNICALL Java_org_thotheolh_jche_NativeBridge_loadPKCS11Module
(JNIEnv *env, jobject obj, jstring location) {
printf("inside native method\n");
pkcs11ModuleFileLoc = (*env)->GetStringUTFChars(env, location, (jboolean *)0);
printf("%s", pkcs11ModuleFileLoc);
//pkcs11 = LoadLibraryA(pkcs11ModuleFileLoc);
//printf("\nLoaded PKCS11 Lib");
}
我尝试检查 Java 中加载的库,发现它们已经加载,但不知何故,尽管查看了许多其他可用方法来尝试解决此问题,但我还是收到了所描述的错误。
最佳答案
我尝试过,但无法重现您的问题(但我使用 Linux 并将 System.loadLibrary("libJPKCS11");
更改为 System.loadLibrary("JPKCS11");
,请参见下文,但我确信这不会导致您的问题,因为错误消息会有所不同)。
您收到的错误消息意味着可以加载库,因此调用 System.loadLibrary()
没有问题。
您确定 JCHE.obj
是 libJPKCS11.dll
的成员,即 libJPKCS11.dll
链接正确,并且 JCHE.obj
是使用用于创建 DLL 的正确标志构建的吗?对我来说,该消息看起来好像库已正确加载,但不包含函数 Java_org_thotheolh_jche_NativeBridge_loadPKCS11Module()
。因此,您可能需要检查 libJPKCS11.dll
实际上是否“完整”且“最新”。
顺便说一下,您可以考虑删除 lib
前缀。 System.loadLibrary
负责处理前缀和后缀。您只需使用System.loadLibrary("foo");
。然后,它在 POSIX 上加载 libfoo.so
,在 Windows 上加载 foo.dll
。否则它会尝试在 POSIX 上加载 liblibfoo.so
,这感觉很奇怪。
关于java.lang.UnsatisfiedLinkError : org. thotheolh.jche.NativeBridge.loadPKCS11Module(Ljava/lang/String;)V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28978030/
我在 Android 5.0 的魅族设备上发生崩溃。大多数设备上不会出现此崩溃。 错误是:java.lang.NoSuchMethodError:没有接口(interface)方法 getOrDefa
我正在尝试一个 Restful web 服务示例,所以当我要访问 url 时,我遇到了异常 java.lang.NoSuchMethodError: jersey.repackaged.com.goo
我正在将一个 Spring web 项目转换为一个 Maven 项目,但我收到了这个错误: java.lang.NoSuchMethodError: org.jboss.logging.Logger.
在 Tomcat 6/Ubuntu 12.04 上启动 Grails 2.1.0 应用程序时出现以下错误。 Error 500 - Internal Server Error. groovy.lang
将 spring 版本 3.1.3 升级到 4.2.2 后,我遇到了这种异常,并且我正在使用quartz-schedular 2.0.1 版本它在 xml 文件中显示错误
我遇到了这个异常: java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Lj
您好,我只是从 SQL SERVER 选择数据并将其存储在结果集中。我遇到以下错误。 **JDBC ERROR : AbstractMethodError: com.microsoft.sqlserv
我在 weblogic 服务器中部署应用程序时遇到了这个问题。部署后,状态为“已准备”,并且不会由于此问题而更改为“Activity ” 有人可以帮我解决这个问题吗 提前致谢。!! 最佳答案 这显然与
出现以下错误: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/Str
我是一个有 maven、spring、依赖冲突的新手(我不知道如何查看它们以及如何解决它们)...即使我花了几个小时尝试解决这个问题,我也无法单独解决. 感谢您花时间帮助解决问题 错误 SEVERE:
在我的java代码中,我尝试构建一个arraylist列表,我的代码如下, private ArrayList[] listoflist; listoflist = (ArrayList[]) new
我写了一个泛型类,下面是类的构造函数。我想按照行写的那样做这样的事情 elements = (E[])new Object[size] 因为我在运行时不知道泛型类型所以它会抛出异常。 public c
当我想读取文件时,我的文件格式是: 12334 本:23,字:21,老师:23 val fp = "/user/user_id.txt" sc.textFile(fp).map { s =
这看起来可能是一个愚蠢的问题,但我无法正确理解为什么每次在控制台都会出现这种情况。我已经检查了每一行,但是每一行都正确响应,但是当它进行随机播放然后打印时,它给了我这个输出。 我的代码: packag
我用 java 编写了一个小程序,它接受一个字符串作为用户输入。现在我已经制作了一个用 Visual C++ 编写代码的 dll。当我从 netbeans 运行我的程序时,它显示此异常。 Except
我的代码在下面给出了一个错误; Exception in thread "main" java.lang.NoSuchMethodError: com/myApp/Client.cypherCBC(L
我正在使用 Eclipse,并且正在使用 Java。我的目标是使用 bogoSort 方法对 vector 进行排序在一个 vector (vectorExample)中适应我的 vector 类型,
我有一个使用此方法的 HIBERNATE DAOImpl: public List listaEstados() throws DAOException { List lista
我正在尝试从 linkedhashset 中检索随机元素。下面是我的代码,但它每次都给我异常。 private static void generateRandomUserId(Set userIds
我正在创建一个实现 GenericList 类的 ListType 类。 findMax、findMin 和 printAll 方法是我添加到 ListType 中的。我相信问题出在我扩展的 Comp
我是一名优秀的程序员,十分优秀!