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文件及相关打包方法相关推荐

  1. java 加载dll后打包_让Jacob从当前路径读取dll文件及相关打包方法

    让Jacob从当前路径读取dll文件及相关打包方法 独立观察员2013.08.12 Jacob  LibraryLoader.class修改版代码 功能:让jacob可在当前路径下的dll文件夹内读取 ...

  2. php远程读取几行文件,PHP读取远程文件的三种方法

    PHP读取远程文件的三种方法 (2008-08-01 14:29:55) 标签: php 下载远程文件 it HP读取远程文件的几种方法,做采集的第一步就是读取远程文件- 1.file_get_con ...

  3. dll文件是什么语言编写的_Win7系统当中libeay32.dll文件丢失的解决方法是什么?...

    Win7系统libeay32.dll文件丢失应该如何解决?有不少用户在打开电脑运行游戏的时候却会出现"libeay32.dll文件丢失"的提示,用了很多方法却还是无法解决,那么该问 ...

  4. python导入txt为dataframe-python批量读取txt文件为DataFrame的方法

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

  5. java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)

    相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...

  6. python读取txt为dataframe_python批量读取txt文件为DataFrame的方法

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

  7. matlab中读文件的行数_Matlab中读取txt文件的几种方法

    Matlab中读取txt文件的几种方法 一.纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如test.txt文件,内容为"17.901 -1.1 ...

  8. inux读取ISO文件或是光驱的方法--挂载

    inux读取ISO文件或是光驱的方法--挂载 首先在虚拟机选项的设置里设置CD/DVD选项,勾选: Connect at power on 再在连接中选择: Use ISO image file 即选 ...

  9. python 读取jpg文件是yuv_Python读取YUV文件,并显示的方法

    今天小编就为大家分享一篇Python读取YUV文件,并显示的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python读取YUV格式文件,并使用opencv显示的方法 open ...

最新文章

  1. 解决Linux CENTOS服务器 tree命令出现乱码 解析原因
  2. 美军认知技术发展态势
  3. MASK-RCNN学习一:(数据集/原理介绍)
  4. Linux查询系统信息
  5. ic读卡器设置工具_从Matlab被禁来看,给IC教育带来哪些启发?
  6. Android 系统(167)----OTA升级常见问题
  7. 将MfgTool工具改造为自己的烧写工具
  8. 2021年第一篇原创——Spring核心初探~
  9. BZOJ 2436 Noi嘉年华(优化DP)
  10. 从基础到分析,聊一聊企业报表平台的建设规划!
  11. 频率学派还是贝叶斯学派?聊一聊机器学习中的MLE和MAP
  12. 转:matlab中print、fprintf、scanf、disp函数简要语法介绍
  13. C语言三款游戏(贪吃蛇、推箱子、小鸟飞飞)(含gui)(含完整代码、粘贴即用)
  14. ICCV2021 多目标跟踪(MOT)汇总
  15. Python 汉字转拼音的库--- PyPinyin
  16. linux vi波浪符号的作用,vi使用方法
  17. MODIS16天数据月合成/季合成
  18. 两个微信号绑定一个服务器ip,一个手机号能绑定几个微信账号(一个手机号注册多个微信号的方法)...
  19. 【Learning RAW-to-sRGB Mappings with Inaccurately Aligned Supervision通过不准确对齐的监督学习 RAW 到 sRGB 的映射】
  20. Python实战 | 如何抓取tx短片弹幕并作词云图分析

热门文章

  1. CSDN改版问题多多
  2. Java中三种字符串的拼接(++ , String.format , StringBuilder.append)
  3. python md5函数_python实现md5加密
  4. 浅谈C语言static关键字 静态变量 函数
  5. 职工考勤管理信息系统数据库课设_职工考勤管理信息系统数据库课程设计
  6. win10用计算机分区,新电脑win10怎样给系统硬盘分区?给新win10电脑分区硬盘的方法...
  7. 《基于MFC的OpenGL编程》Part 14 Quadrics
  8. 不知道选择多云还是混合云?先把概念弄清楚吧
  9. 1313 质因数分解
  10. MySQL中批量插入数据