java.lang.UnsatisfiedLinkError: ctest.test.decrypt([BLjava/lang/String;)([B

问题描述

错误:Exceptioninthread"main"java.lang.UnsatisfiedLinkError:ctest.test.decrypt([BLjava/lang/String;)[Batctest.test.decrypt(NativeMethod)atctest.test.main(test.java:34)我在做jni的demo的时候出现以上错误java代码:packagectest;importjava.io.File;/***<p>Title:</p>**<p>Description:</p>**<p>Copyright:Copyright(c)2013</p>**<p>Company:</p>**@authornotattributable*@version1.0*/publicclasstest{publictest(){}static{//System.loadLibrary("encrypt");System.load("D:"+File.separator+"java开发"+File.separator+"wordspace"+File.separator+"ccWorkTools"+File.separator+"classes"+File.separator+"test.dll");}publicstaticvoidmain(Stringargs[]){decrypt(newbyte[10],"string");}publicstaticnativebyte[]decrypt(byte[]encryptData,Stringpassword);}c++代码#include<windows.h>#include"test.h"#include"jni.h"#include<string>JNIEXPORTjbyteArrayJNICALLJava_ctest_test_decrypt(JNIEnv*env,jclasss,jbyteArraybyteArr,jstringstr){bytepData[]={0x01,0x01,0x02,0xe4,0x71,0x2b,0x5f,0x30};jbyte*by=(jbyte*)pData;intnOutSize=sizeof(pData);jbyteArrayjarray=env->NewByteArray(nOutSize);env->SetByteArrayRegion(jarray,0,nOutSize,by);constchar*nativeString=env->GetStringUTFChars(str,0);printf("%s",nativeString);returnjarray;}BOOLWINAPIDllMain(HINSTANCEhinstDLL,DWORDfdwReason,LPVOIDlpvReserved){switch(fdwReason){caseDLL_PROCESS_ATTACH://attachtoprocess//returnFALSEtofailDLLloadbreak;caseDLL_PROCESS_DETACH://detachfromprocessbreak;caseDLL_THREAD_ATTACH://attachtothreadbreak;caseDLL_THREAD_DETACH://detachfromthreadbreak;}returnTRUE;//succesful}test.h代码/*DONOTEDITTHISFILE-itismachinegenerated*/#include<jni.h>/*Headerforclassctest_test*/#ifndef_Included_ctest_test#define_Included_ctest_test#ifdef__cplusplusextern"C"{#endif/**Class:ctest_test*Method:decrypt*Signature:([BLjava/lang/String;)[B*/JNIEXPORTjbyteArrayJNICALLJava_ctest_test_decrypt(JNIEnv*,jclass,jbyteArray,jstring);#ifdef__cplusplus}#endif#endif恳求前辈们指点一下,不知道是在哪里出错了网上搜索了很多还是没能解决。估计跟java方法签名有关,因为在网上查说是这样子,但是我核对了,找不出原因我用的ide是codeblock编译器是gnugcc在线等

解决方案

本帖最后由 ouchuquan 于 2014-05-12 17:24:39 编辑
解决方案二:
应该是参数类型错误。
解决方案三:
引用1楼fangmingshijie的回复:

应该是参数类型错误。

不晓得不知道从何入手测试
解决方案四:
自己顶一下,会的大神请指点下小弟,做了一天弄不出来,没办法耶
解决方案五:
另外2个demo与以上代码大致类似,一个报错:Exceptioninthread"main"java.lang.UnsatisfiedLinkError:ctest.GoodLuck.getString()Ljava/lang/String;atctest.GoodLuck.getString(NativeMethod)atctest.GoodLuck.main(GoodLuck.java:37)另一个报错:Exceptioninthread"main"java.lang.UnsatisfiedLinkError:ctest.HelloJni.displayHelloJni()Vatctest.HelloJni.displayHelloJni(NativeMethod)atctest.HelloJni.main(HelloJni.java:27)报错大概相同,应该属于同一错误,其实我之前GoodLuck这个demo能跑起来的,可是后来好像改了c++的编译器就不能跑了,可惜后来尝试更改编译器就是不成功,只怪粗心大意把能跑的demo给修改了。我现在有能跑的动态库文件可惜不懂反编译出来看。
解决方案六:
动态库能跑,用个软件看下。我记得有个什么creater的。以前用过,好久没玩忘了
解决方案七:

解决方案八:
引用6楼rui888的回复:这帖子也是关于jni问题的,可惜他的是找不到dll出错,我这里应该属于找不到方法类型的
解决方案九:
NDK下面的C++代码无法被JAVA识别:执行的过程中报错:C++的代码里面必须先声明:extern"C"{JNIEXPORTjbyteArrayJNICALLJava_ctest_test_decrypt(JNIEnv*env,jclasss,jbyteArraybyteArr,jstringstr);};这是因为生成的二进制文件中,C和C++的符号表不相同造成的。Jni是按照C的生成规则去找函数的,所以要加上externC使编译器把函数按照C的规则编译这样才能被JAVA调用
解决方案十:
也遇到这个问题,但是,我写了两个java工程,一个可以调用成功,在另一个调用就报这个错误,不懂啥原因。。。

时间: 2024-10-24 16:59:21

java.lang.UnsatisfiedLinkError: ctest.test.decrypt([BLjava/lang/String;)([B的相关文章

Caused by: java.lang.UnsatisfiedLinkError...问题的解决

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapVOS_v2_1_3: findLibrary returned null 在使用百度地图的时候碰到了这问题 网上搜了下各种方法 都不顶用 我想死的心都有了..有没有碰到过这问 题的 求分享下经验啊. 后来看了百度地图sdk的demo以后,是因为有一个文件 liblocSDK.so,必须放在 libs/armeabi 目录下.将其对应的 liblocSDK.so拷到相

c java jna-window2008server上用jna调用Native.loadlibrary报java.lang.UnsatisfiedLinkError:

问题描述 window2008server上用jna调用Native.loadlibrary报java.lang.UnsatisfiedLinkError: window2008server上用jna调用Native.loadlibrary报java.lang.UnsatisfiedLinkError: Unable to load library 'helloworld.dll: ???????¨,32位win系统好用,请问大侠们有谁遇到过类似的情况,怎么解决,急!!! 解决方案 去掉.dll

java.lang.UnsatisfiedLinkError

问题描述 java.lang.UnsatisfiedLinkError Exception in thread "main" java.lang.UnsatisfiedLinkError: javax.microedition.lcdui.Font.init(III)V at javax.microedition.lcdui.Font.init(Native Method) at javax.microedition.lcdui.Font.(Font.java:198) at java

java.lang.UnsatisfiedLinkError: dlopen failed:unknown reloc type 160

In case you set up your environment with another version of NDK than the recommended one (r9d) and got an error on launching the app: 1 java.lang.UnsatisfiedLinkError: dlopen failed: 2         unknown reloc type 160 You can try modifying the~/Project

java.lang.UnsatisfiedLinkError: Couldn&amp;#039;t load hyphenate_av: findLibrary returned null

问题描述 用的是easeUI的library,参照ChatDemoUI3.0写的,运行直接报错:java.lang.UnsatisfiedLinkError: Couldn't load hyphenate_av: findLibrary returned null            at java.lang.Runtime.loadLibrary(Runtime.java:365)at java.lang.System.loadLibrary(System.java:535)at com.

android 64位系统 so文件出错 java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in

问题描述 04-11 19:26:14.805: E/SMACK-Voe(14608): enter JNI_OnLoad04-11 19:26:14.805: E/SMACK-Voe(14608): TORNADO007 WEBRTC_EASEMOB not DEFINED04-11 19:26:14.805: E/art(14608): ----- class 'Lcom/hyphenate/media/AVNative;' cl=0x12c92cc0 -----04-11 19:26:14

求前辈帮忙看看java.lang.UnsatisfiedLinkError: cn/org/bjca/sign/PDFSign.getHashValue

问题描述 使用signPDF.jar签名时报错java.lang.UnsatisfiedLinkError:cn/org/bjca/sign/PDFSign.getHashValue([B[B[B[I)Jatcn.org.bjca.sign.PDFSign.signPDF(PDFSign.java:825)atonest.sp.pdf.PDFSignTools.signPDF(PDFSignTools.java:183)atonest.sp.pdf.PDFSignTools.simpleSign

【我的Android进阶之旅】Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方法

错误描述 今天使用第三方的so库时候,调用JNI方法时出现了错误.报错如下所示: 11-01 16:39:20.979 4669-4669/com.netease.xtc.cloudmusic E/art: No implementation found for void com.netease.xtc.cloudmusic.utils.NeteaseMusicUtils.nativeInit(android.content.Context) (tried Java_com_netease_xt

java jni报错java.lang.UnsatisfiedLinkError。。。。。高手请进

问题描述 在linux下用java调用so动态库 一直报java.lang.UnsatisfiedLinkError好像是找不到动态库问题1:so动态库要放在哪个目录?问题2:System.load(""); 时,应该填入绝对路径还是什么?问题3:编译so动态库时需要注意什么?注:so动态库我是用java编译的,而不是用c编译的.跪谢~~~~~~~~~~~~~ 解决方案 我用的是加入参数 -Djava.library.path=动态连接库文件放置的位置