Exception in thread "main" java.lang.UnsatisfiedLinkError: Fileinfo.seturl(Ljava/lang/String;)V
at Fileinfo.seturl(Native Method)
at TestMain.main(TestMain.java:3)
java代码1public class Fileinfo{
static{
System.loadLibrary("fileInfo");
}
public static native void seturl(String url);
public static native String getctime();
}java测试main方法代码
public class TestMain{
public static void main(String agrs[]){
Fileinfo.seturl("aaaa");
System.out.println(Fileinfo.getctime());
}
}
javah生成头文件代码
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Fileinfo */#ifndef _Included_Fileinfo
#define _Included_Fileinfo
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Fileinfo
* Method: seturl
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_Fileinfo_seturl
(JNIEnv *, jclass, jstring);/*
* Class: Fileinfo
* Method: getctime
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_Fileinfo_getctime
(JNIEnv *, jclass);#ifdef __cplusplus
}
#endif
#endifC+代码#include "Fileinfo.h"
#include <malloc.h>
#include <string.h>
#include <memory.h>
char* jstringTostring(JNIEnv* env, jstring jstr)
{
char* rtn = NULL;
jclass clsstring = env->FindClass("java/lang/String");
jstring strencode = env->NewStringUTF("utf-8");
jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray barr= (jbyteArray)env->CallObjectMethod(jstr, mid, strencode);
jsize alen = env->GetArrayLength(barr);
jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE);
if (alen > 0)
{
rtn = (char*)malloc(alen + 1);
memcpy(rtn, ba, alen);
rtn[alen] = 0;
}
env->ReleaseByteArrayElements(barr, ba, 0);
return rtn;
}
jstring stoJstring(JNIEnv* env, const char* pat)
{
jclass strClass = env->FindClass("Ljava/lang/String;");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray(strlen(pat));
env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("utf-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
}
char *url="";
/*
* Class: Fileinfo
* Method: seturl
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_Fileinfo_seturl
(JNIEnv * env, jclass, jstring jst){
url=jstringTostring(env,jst);
}/*
* Class: Fileinfo
* Method: getctime
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_Fileinfo_getctime
(JNIEnv * env, jclass){
return stoJstring(env,url);
}
解决方案 »
- 关于struts2 的验证?????????
- java 调用perl的方法,最好根据我给的代码,写以个可以看懂的例子
- 用WSAD(webshere)构建项目 !!!急!急!急
- 散分
- 【新手求助】javaee6怎么添加源码
- 一个关于引用空值导致出错的小问题,希望高人指点,在线求救
- 发了几篇hibernate的文章,比较偏们,呃,顺便散分。
- 怎样连接到sybase数据库,或者配制jdbc for sybase
- 寻格式化java 代码的Eclipse插件,象.net的代码编辑窗一样,一个方法可以通过一个+号来收缩和展开!
- 请问各位大侠:如何在页面中设置,使当不能显示APPLET时候,自动让用户去我们自己的tomcat服务器(局域网内)而不要从sun站点上下载JAVA
- spring 实现帐套功能
- JBPM有没有哪位大侠原意思提供些资源啊!感激不尽了!
* Class: Fileinfo
* Method: seturl
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_Fileinfo_seturl
(JNIEnv * env, jclass, jstring jst){
url=jstringTostring(env,jst);
}这个不是seturl的实现么?
SecurityException - if a security manager exists and its checkLink method doesn't allow loading of the specified dynamic library
UnsatisfiedLinkError - if the library does not exist.
NullPointerException - if libname is null