1、最近将程序打包成jar的时候才出现个文件:
我将一个配置文件放在了classpath下,程序获取classpath路径后便使用了commons-io的fileutils.copy方法将该文件拷贝到system32下。
该程序在ide环境中云高兴没有问题,但是当我把程序打包成jar时,程序运行失败。
后来查资料才知道要将打包成jar中的文件拷贝到jar外,必须首先将文件从jar中解压出来,然后才能进行拷贝。
后来在jnative中查看源代码的时候,发现它有一个从jar包中拷贝dll到java-libary-path的代码。
该方法在JNative.java中:
private static void loadFromJar() throws UnsatisfiedLinkError
{
File tempDir = new File(System.getProperty("user.dir"));
File dllFile = new File(tempDir, DLL_NAME);
// Thubby: This returns null for me!
//InputStream in = JNative.class.getResourceAsStream("../../../lib-bin/" + DLL_NAME);
InputStream in = JNative.class.getResourceAsStream("/lib-bin/" + DLL_NAME);
if (in == null)
{
if (!dllFile.exists())
{
throw new UnsatisfiedLinkError(DLL_NAME + " : unable to find in " + tempDir);
}
}
else
{
if (dllFile.exists() && dllFile.canWrite())
{
dllFile.delete();
}
if (!dllFile.exists())
{
byte[] buffer = new byte[512];
BufferedOutputStream out = null;
try
{
try
{
out = new BufferedOutputStream(new FileOutputStream(dllFile));
while (true)
{
int readed = in.read(buffer);
if (readed > -1)
{
out.write(buffer, 0, readed);
}
else
{
break;
}
}
}
finally
{
if (out != null)
{
out.close();
}
}
}
catch (IOException e)
{
throw new UnsatisfiedLinkError("Can't write library in " + dllFile);
}
}
System.load(dllFile.toString());
}
}
2、加载dll,dll的当前目录变为jre/bin目录。
例如:dll需要加载一个配置ini文件,而这个dll默认读取和该dll的同级目录下ini文件。但是这时当前目录已经变为jre/bin目录,无论你的dll是否是放在system32下或者是其他的地方
分享到:
相关推荐
为了使用本地Jar包,我们需要将其拷贝至项目根目录,即pom.xml文件所在的同级目录。在项目根目录下,我们可以创建文件夹lib,以便存放本地Jar包。例如,我们可以在项目根目录下创建文件夹lib,然后将四个Jar包...
1、将log4j-1.2.17.jar、tomcat-juli-adapters.jar两个jar包和log4j.properties文件拷贝到 Tomcat 的 lib 目录下; 2、将 tomcat-juli.jar 拷贝到 Tomcat 的 bin 目录下,替换原有的jar包; 3、将log4j-1.2.17....
5. **更新jar文件**:使用`jar uvf jar_file_name.jar MANIFEST.MF`命令将MANIFEST.MF文件添加到jar中。 二、使用exe4j生成exe文件 1. **下载并安装exe4j**:exe4j是一个用于将Java应用程序打包为Windows可执行...
标题"okio jar包下载.zip"表明这是一个包含okio库的Java归档文件(jar包)的压缩文件。Okio是一个针对Java I/O进行优化的库,由Square公司开发,用于提高应用程序在处理输入/输出流时的效率。描述中的"okio jar ...
在实际开发中,我们通常不直接将JAR包拷贝到Maven仓库,而是通过在`pom.xml`文件中添加依赖来管理HBase,例如: ```xml <groupId>org.apache.hbase <artifactId>hbase-client 特定版本号 ``` Maven会自动...
其中,`hbase_libJar包`是HBase运行的核心组件之一,包含了HBase运行所需的各种依赖库文件。本文将深入探讨`hbase_libJar包`的组成、作用以及如何在Linux系统中正确配置环境变量`HBASE_HOME`,以确保HBase服务的稳定...
在"OkHttplibs"这个压缩包中,包含了OKHTTP和OKIO的JAR包,你可以直接将它们添加到你的项目中,以利用这两个库的强大功能。在导入JAR包后,只需按照官方文档或示例代码,就可以轻松开始使用OKHTTP进行网络请求,并...
在描述中提到,“这些jar包是我在官网上找到axis2的war包,把它部署到tomcat之后,得到axis2工程,在这个工程里面完全拷贝的。”这表明了获取这些jar包的过程。通常,当你从Apache Axis2官方网站下载并部署WAR文件到...
Jar打包插件,将其拷贝到Eclipse的plugins下面,重启Eclipse即可,在文件菜单,导出,Java下其他里看到
这个“netty-4.1.4-jar包”包含了两个重要的文件:“netty-all-4.1.17.Final.jar”和“netty-all-4.1.17.Final-sources.jar”,它们是Netty框架的特定版本——4.1.17.Final的组件。 首先,我们来看“netty-all-...
安装插件net.sf.fjep.fatjar_0.0.31.jar插件,直接将net.sf.fjep.fatjar_0.0.31.jar拷贝到MyEclipse安装目录下的Plugins目录中,然后重启您的MyEclipse。 2. 执行导出: 1. 选中您要导出为jar文件的项目右
在部署过程中,将jar包和整个项目结构打包成war文件,然后通过管理工具(如manager.xml)上传到tomcat的webapps目录,或者通过脚本直接拷贝到相应位置。启动tomcat后,应用会被自动部署并可供访问。 总结来说,...
**Maven** 是一个广泛使用的项目管理和综合工具,它通过在`pom.xml`文件中定义依赖关系来帮助开发者自动下载和管理jar包。在`<dependencies>`标签下,你可以列出所有项目需要的jar包,比如: ```xml <groupId>...
标题提到的“跨域所需的两个jar包”就是这个过程中的关键组件。 首先,`cors-filter-1.7.1.jar` 是CORS Filter的实现,它基于Java Servlet规范,用于处理HTTP请求的跨域问题。CORS(Cross-Origin Resource Sharing...
这个压缩包包含两个重要的资源:Netty 5.0 的 JAR 包和 Netty 4.0.3 的 API 文档。 首先,让我们详细探讨 Netty 5.0 的 JAR 包。JAR (Java Archive) 文件是 Java 平台的标准归档格式,用于封装多个类文件和其他资源...
为了在项目中使用OkHttp 3.6.0和Okio 1.6.0,你需要将jar包添加到项目的类路径中,或者如果你使用的是现代的构建工具如Maven或Gradle,可以添加相应的依赖配置。在Android Studio中,可以在build.gradle文件中添加...
这个JAR包是使用HikariCP的核心依赖,将其添加到项目类路径中,就可以启用HikariCP作为你的数据库连接池。 在HikariCP中,主要关注以下几个核心概念: 1. **连接池**:HikariCP维护了一个数据库连接的池,而不是...
1.将net.sf.jadclipse_3.3.0.jar拷贝到eclipse的plugins目录下 2.再删除eclipse的configuration目录下org.eclipse.update文件 3.重启eclipse,点击菜单栏中File->Restart 4.下载jad的可执行文件,解压后放在某一磁盘...
在描述中提到的"将jar包拷贝到tomcat的lib下",这表明我们要在基于Tomcat的Java Web应用中使用Redis。Tomcat是Apache软件基金会的一个开源项目,是一个广泛使用的Java应用服务器。当我们开发基于Spring Boot或传统...
闲来无事,手写了一个打包小工具,java swing实现的 介绍下这个打包工具 把...此版本有有jar包 可以参考源码 针对原型版本去除了过期时间限制 新增了多项目切换功能 新增字段扫描包等 之前版本不能用了 请下载最新的