让Jacob从当前路径读取dll文件及相关打包方法
让Jacob从当前路径读取dll文件及相关打包方法
独立观察员2013.08.12
Jacob LibraryLoader.class 修改版代码
功能:让jacob可在当前路径下的dll文件夹内读取相关依赖的dll文件,免去复制到系统文件夹的麻烦。
Bug:好像就不会从系统路径读取了,难道catch内代码不执行?期待高手解答。
package com.jacob.com;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Set;
public final class LibraryLoader
{
publicstatic final String JACOB_DLL_PATH = "jacob.dll.path";
publicstatic final String JACOB_DLL_NAME = "jacob.dll.name";
publicstatic final String JACOB_DLL_NAME_X86 = "jacob.dll.name.x86";
publicstatic final String JACOB_DLL_NAME_X64 = "jacob.dll.name.x64";
publicstatic final String DLL_NAME_MODIFIER_32_BIT = "x86";
publicstatic final String DLL_NAME_MODIFIER_64_BIT = "x64";
publicstatic void loadJacobLibrary()
{
ResourceBundleresources = null;
Setkeys = new HashSet();
try{
resources=ResourceBundle.getBundle(LibraryLoader.class.getName(), Locale.getDefault(),LibraryLoader.class.getClassLoader());
Enumerationi = resources.getKeys();
while(i.hasMoreElements()) {
Stringkey = (String)i.nextElement();
keys.add(key);
}
}
catch(MissingResourceException e)
{
}
try {
Stringpath, name, dir;
path= System.getProperty("user.dir") + "\\dll\\"; //先获取当前目录下的dll文件夹路径——dlgcy;
name= getPreferredDLLName();
dir= path + name + ".dll"; //加后缀适应load()方法;
JacobObject.debug("Loadinglibrary " + dir + " using System.loadLibrary ");
System.load(dir); //使用load()可载入任意绝对路径下的库文件;
System.out.println("载入dll文件成功!");
}catch (Exception e) { //原方法;
Stringpath = System.getProperty("jacob.dll.path");
if ((path == null) && (resources !=null) && (keys.contains("jacob.dll.path"))) {
path =(String)resources.getObject("jacob.dll.path");
}
if (path != null) {
JacobObject.debug("Loading library" + path + " using System.loadLibrary ");
System.loadLibrary(path);
}
else {
String name = null;
if(System.getProperty("jacob.dll.name") != null)
name =System.getProperty("jacob.dll.name");
else if((System.getProperty("jacob.dll.name.x86") != null) &&(shouldLoad32Bit()))
{
name = System.getProperty("jacob.dll.name.x86");
} else if((System.getProperty("jacob.dll.name.x64") != null) &&(!shouldLoad32Bit()))
{
name =System.getProperty("jacob.dll.name.x64");
} else if ((resources != null) &&(keys.contains("jacob.dll.name")))
name =resources.getString("jacob.dll.name");
else if ((resources != null) &&(keys.contains("jacob.dll.name.x86")) && (shouldLoad32Bit()))
{
name =resources.getString("jacob.dll.name.x86");
} else if ((resources != null) &&(keys.contains("jacob.dll.name.x64")) &&(!shouldLoad32Bit()))
{
name =resources.getString("jacob.dll.name.x64");
}
else{
name = getPreferredDLLName();
}
JacobObject.debug("Loading library" + name + " using System.loadLibrary ");
System.loadLibrary(name);
}
e.printStackTrace();
}
}
publicstatic String getPreferredDLLName()
{
if(shouldLoad32Bit()) {
return"jacob-" + JacobReleaseInfo.getBuildVersion() + "-" +"x86";
}
return"jacob-" + JacobReleaseInfo.getBuildVersion() + "-" +"x64";
}
protectedstatic boolean shouldLoad32Bit()
{
Stringbits = System.getProperty("sun.arch.data.model", "?");
if(bits.equals("32"))
returntrue;
if(bits.equals("64")) {
returnfalse;
}
Stringarch = System.getProperty("java.vm.name", "?");
if(arch.toLowerCase().indexOf("64-bit") >= 0) {
returnfalse;
}
returntrue;
}
}
附下载:http://download.csdn.net/detail/w19921004/5916787
使用j2ewiz打包
首先在Eclipse中这样导出:
出现的是一个jar文件和一个库文件夹:
然后打开j2ewiz:
然后选择“浏览JAR…”或者你用好压将Jar文件提前解压那么这时就可以选择“选择目录…”:
接下来都是相应的选择;
这里还可以隐藏class,就是当你生成exe文件后,你用好压打开也看不见你的class:
(慎重选择隐藏功能,否则可能读取不到某些路径的文件)
最后就可生成exe文件:图标可自己设定。
接着将exe文件、依赖库文件夹、以及其它资源文件打包压缩:
然后点击“自解压”制作成类似安装包的自解压文件(可参考http://4462080.blog.51cto.com/4452080/1269688)。
转载于:https://blog.51cto.com/4462080/1271614
让Jacob从当前路径读取dll文件及相关打包方法相关推荐
- java 加载dll后打包_让Jacob从当前路径读取dll文件及相关打包方法
让Jacob从当前路径读取dll文件及相关打包方法 独立观察员2013.08.12 Jacob LibraryLoader.class修改版代码 功能:让jacob可在当前路径下的dll文件夹内读取 ...
- php远程读取几行文件,PHP读取远程文件的三种方法
PHP读取远程文件的三种方法 (2008-08-01 14:29:55) 标签: php 下载远程文件 it HP读取远程文件的几种方法,做采集的第一步就是读取远程文件- 1.file_get_con ...
- dll文件是什么语言编写的_Win7系统当中libeay32.dll文件丢失的解决方法是什么?...
Win7系统libeay32.dll文件丢失应该如何解决?有不少用户在打开电脑运行游戏的时候却会出现"libeay32.dll文件丢失"的提示,用了很多方法却还是无法解决,那么该问 ...
- python导入txt为dataframe-python批量读取txt文件为DataFrame的方法
我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...
- java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)
相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...
- python读取txt为dataframe_python批量读取txt文件为DataFrame的方法
我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...
- matlab中读文件的行数_Matlab中读取txt文件的几种方法
Matlab中读取txt文件的几种方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如test.txt文件,内容为"17.901 -1.1 ...
- inux读取ISO文件或是光驱的方法--挂载
inux读取ISO文件或是光驱的方法--挂载 首先在虚拟机选项的设置里设置CD/DVD选项,勾选: Connect at power on 再在连接中选择: Use ISO image file 即选 ...
- python 读取jpg文件是yuv_Python读取YUV文件,并显示的方法
今天小编就为大家分享一篇Python读取YUV文件,并显示的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python读取YUV格式文件,并使用opencv显示的方法 open ...
最新文章
- 解决Linux CENTOS服务器 tree命令出现乱码 解析原因
- 美军认知技术发展态势
- MASK-RCNN学习一:(数据集/原理介绍)
- Linux查询系统信息
- ic读卡器设置工具_从Matlab被禁来看,给IC教育带来哪些启发?
- Android 系统(167)----OTA升级常见问题
- 将MfgTool工具改造为自己的烧写工具
- 2021年第一篇原创——Spring核心初探~
- BZOJ 2436 Noi嘉年华(优化DP)
- 从基础到分析,聊一聊企业报表平台的建设规划!
- 频率学派还是贝叶斯学派?聊一聊机器学习中的MLE和MAP
- 转:matlab中print、fprintf、scanf、disp函数简要语法介绍
- C语言三款游戏(贪吃蛇、推箱子、小鸟飞飞)(含gui)(含完整代码、粘贴即用)
- ICCV2021 多目标跟踪(MOT)汇总
- Python 汉字转拼音的库--- PyPinyin
- linux vi波浪符号的作用,vi使用方法
- MODIS16天数据月合成/季合成
- 两个微信号绑定一个服务器ip,一个手机号能绑定几个微信账号(一个手机号注册多个微信号的方法)...
- 【Learning RAW-to-sRGB Mappings with Inaccurately Aligned Supervision通过不准确对齐的监督学习 RAW 到 sRGB 的映射】
- Python实战 | 如何抓取tx短片弹幕并作词云图分析
热门文章
- CSDN改版问题多多
- Java中三种字符串的拼接(++ , String.format , StringBuilder.append)
- python md5函数_python实现md5加密
- 浅谈C语言static关键字 静态变量 函数
- 职工考勤管理信息系统数据库课设_职工考勤管理信息系统数据库课程设计
- win10用计算机分区,新电脑win10怎样给系统硬盘分区?给新win10电脑分区硬盘的方法...
- 《基于MFC的OpenGL编程》Part 14 Quadrics
- 不知道选择多云还是混合云?先把概念弄清楚吧
- 1313 质因数分解
- MySQL中批量插入数据