Java JNI 错误: thread 'main' using JNI after critical get in call to FindClass
这个报错可能的原因是在 com.jiagu.payegis.signaturecheck.SignatureCheck$DoneRunnable.run() 方法中,在获取到一个关键的对象之后,继续使用JNI。JNI(Java Native Interface)允许Java代码与其他语言(如C、C++)进行交互,但需要注意其正确的使用方式。
具体原因可能包括以下几点:
-
在获取到关键对象之后,可能没有正确释放JNI资源。在JNI使用完成后,需要调用
ReleaseXXX方法释放相关资源,否则可能会导致内存泄漏或其他问题。 -
可能没有正确处理JNI的线程安全性。JNI在多线程环境中需要谨慎使用,需要保证对JNI资源的访问是线程安全的,否则可能会导致竞态条件或其他线程相关的问题。
-
可能在JNI调用中访问了无效的对象或方法。在使用JNI时,需要确保传递的对象和方法都是有效的,否则可能会导致NullPointerException或其他相关的错误。
针对这个报错,建议检查 com.jiagu.payegis.signaturecheck.SignatureCheck$DoneRunnable.run() 方法中的JNI代码,确保在使用JNI之前和之后都进行了正确的资源管理和线程安全处理。同时,还应该检查是否存在其他相关的调用或代码可能会导致这个错误的地方。
原文地址: https://www.cveoy.top/t/topic/qr5B 著作权归作者所有。请勿转载和采集!