1.加密狗软件使用api
本次集成加密狗引用api为32位的Dongle.java,引用类库文件为对应Dongle_java.dll:
2.集成java项目目录
加密狗在java项目的使用有其固定目录,取决于加密狗打包时候(不按照他们的目录放,读取不到),我们的包为src-main-java下,建立com.feitian.rockeyarm目录(注,这三个是一体的),Dongle.java放入此目录下:
Dongle_java.dll类库文件直接放入与src同级的项目下:
修改Dongle.java读取类库文件的静态代码块指向Dongle_java.dll(文件放的位置和此处读取的位置一致):
至此,基础环境搭建好了,根据加密狗提供商给的api进行调用。
3.开发常见异常
Exception in thread “main” java.lang.UnsatisfiedLinkError: no Dongle_java.dll in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: no Dongle_java.dll in java.library.path
异常提示为java环境未找到加密狗dll类库,可直接配置环境变量,可由于系统可能跑在客户电脑,不能总配置环境变量,所以想着获取文件所在全路径:
把dll文件直接放在项目跟目录下,与src同级,直接读取
System.load(System.getProperty("user.dir") + "//Dongle_java.dll");
正常读取:
Exception in thread “main” java.lang.UnsatisfiedLinkError: com.demo.util.Dongle.Dongle_Enum([B[I)I
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.demo.util.Dongle.Dongle_Enum([B[I)I
这是由于Dongle.java类库文件未放置正确目录,加密狗类库打包时已经固定了目录,引用到项目里的目录需要和加密狗打包时目录一致
我的加密狗目录为com.feitian.rockeyarm,放到固定目录后可正常读取: