当前位置: 技术问答>java相关
jni 问题 急急急 分数不够可以再加
来源: 互联网 发布时间:2015-09-26
本文导语: 我现在要用java 类去调本地的dll,可是我发现如果我写的java类不属于任何包,也就是不包含package xx;它是可以运行,并调用同一目录下dll的,但是我添加了包名 它就无法调用成功了 异常如下: D:javasoftprojectJNIsrc>jav...
我现在要用java 类去调本地的dll,可是我发现如果我写的java类不属于任何包,也就是不包含package xx;它是可以运行,并调用同一目录下dll的,但是我添加了包名
它就无法调用成功了 异常如下:
D:javasoftprojectJNIsrc>java jni.MyMail
Exception in thread "main" java.lang.UnsatisfiedLinkError: ChPwd
at jni.MyMail.ChPwd(Native Method)
at jni.MyMail.mail_ChPwd(MyMail.java:26)
at jni.MyMail.main(MyMail.java:22)
顺便问一下,我想在servlet中采用reflect的方法调用java class,然后再由java
class 去调用dll,是否可行。
它就无法调用成功了 异常如下:
D:javasoftprojectJNIsrc>java jni.MyMail
Exception in thread "main" java.lang.UnsatisfiedLinkError: ChPwd
at jni.MyMail.ChPwd(Native Method)
at jni.MyMail.mail_ChPwd(MyMail.java:26)
at jni.MyMail.main(MyMail.java:22)
顺便问一下,我想在servlet中采用reflect的方法调用java class,然后再由java
class 去调用dll,是否可行。
|
你的那个DLL只要放在系统的PATH目录下面就可以了,不要放在和类的同一目录
如果你说没有包名字的时候可以,那么你始终将那个DLL放在那个目录就行,
不要理会包名(当然你换了包名,那个DLL的所有函数名字都要更改一次)
如果你说没有包名字的时候可以,那么你始终将那个DLL放在那个目录就行,
不要理会包名(当然你换了包名,那个DLL的所有函数名字都要更改一次)
|
应执行:
javah jni.MyMail
重新生成头文件,重新编译生成.dll
否则死路一条
javah jni.MyMail
重新生成头文件,重新编译生成.dll
否则死路一条