Java如何将dll文件打包到jar中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java如何将dll文件打包到jar中?相关的知识,希望对你有一定的参考价值。
我使用jni写了一个dll,将dll文件放在jar文件根目录,jar中的程序可以正常访问dll,而我把dll打包到jar中,jar却无法找到这个dll文件了。之前我看过有的程序是可以把dll打包到jar中,并能够正常调用的。请问如何才能让程序正常调用jar中的文件?
希望大家说得清楚一些,把相关的代码段发上来。谢谢
//getResourceAsStream以JAR中根路径为开始点
private synchronized static void loadLib(String libName) throws IOException
String systemType = System.getProperty("os.name");
String libExtension = (systemType.toLowerCase().indexOf("win")!=-1) ? ".dll" : ".so";
String libFullName = libName + libExtension;
String nativeTempDir = System.getProperty("java.io.tmpdir");
InputStream in = null;
BufferedInputStream reader = null;
FileOutputStream writer = null;
File extractedLibFile = new File(nativeTempDir+File.separator+libFullName);
if(!extractedLibFile.exists())
try
in = SMAgent.class.getResourceAsStream(BIN_LIB + libFullName);
if(in==null)
in = SMAgent.class.getResourceAsStream(libFullName);
SMAgent.class.getResource(libFullName);
reader = new BufferedInputStream(in);
writer = new FileOutputStream(extractedLibFile);
byte[] buffer = new byte[1024];
while (reader.read(buffer) > 0)
writer.write(buffer);
buffer = new byte[1024];
catch (IOException e)
e.printStackTrace();
finally
if(in!=null)
in.close();
if(writer!=null)
writer.close();
System.load(extractedLibFile.toString());
参考技术A 这个问题是由于 类加载器 造成的
ClassLoader
你对ClassLoader了解么?
你对 boot ClassLoader了解么?
如过不清楚的话,请查看一下 Java类加载机制.本回答被提问者采纳 参考技术B 建议看看CSDN上的这个帖子http://topic.csdn.net/t/20041015/09/3458094.html
如何将带包的java项目文件打包成jar
你那是java文件带包编译 啊 不是啊
是jar.exe要如何建立Jar文件呢?只要使用JDK提供的Java的文件包工具,就是jar.exe,这个就可以将Java程序打包成一个jar文件了。其实就是一个压缩包形式的。
这个jar和JDK中的java或者javac 的用法差不多。
呵呵,以我的为例,我的JDK的安装路径是:D:\Program Files\Java\jdk1.5.0_12\bin
所以你想详细的查看jar怎么用就可以在命令提示符中输入:
D:\>cd Program Files\Java\jdk1.5.0_12\bin\jar
这样你就可以查看jar的使用了。
希望可以帮到你! 参考技术A 将生成的字节码文件放一个文件夹Tom(下一步方便点)、在文件夹下建立以后个文本文档写入你要打包的字节码文件main-class: myFrame(这个说明将myFrame.class打包、冒号后需空一格)、保存为1.txt
然后DOS进入..\Tom执行命令jar cvfm mm.jar 1.txt *.class这个命令表示将生成一个mm.jar文件
我也是刚学这个的、没听懂Hi我 参考技术B javac -d . **.java; 参考技术C 使用eclipse导出功能。。。 参考技术D 用法:jar ctxu[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
选项:
-c 创建新的存档
-t 列出存档内容的列表
-x 展开存档中的命名的(或所有的〕文件
-u 更新已存在的存档
-v 生成详细输出到标准输出上
-f 指定存档文件名
-m 包含来自标明文件的标明信息
-0 只存储方式;未用zip压缩格式
-M 不产生所有项的清单(manifest〕文件
-i 为指定的jar文件产生索引信息
-C 改变到指定的目录,并且包含下列文件:
如果一个文件名是一个目录,它将被递归处理。
清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。
以上是关于Java如何将dll文件打包到jar中?的主要内容,如果未能解决你的问题,请参考以下文章
springboot java调用海康威视sdk 打包成jar后无法引用dll的问题
学习笔记eclipse打包Java项目(本项目引用外部jar包和dll动态链接文件)