Java如何将dll文件打包到jar中?
我使用jni写了一个dll,将dll文件放在jar文件根目录,jar中的程序可以正常访问dll,而我把dll打包到jar中,jar却无法找到这个dll文件了。之前我看过有...
我使用jni写了一个dll,将dll文件放在jar文件根目录,jar中的程序可以正常访问dll,而我把dll打包到jar中,jar却无法找到这个dll文件了。之前我看过有的程序是可以把dll打包到jar中,并能够正常调用的。请问如何才能让程序正常调用jar中的文件?
希望大家说得清楚一些,把相关的代码段发上来。谢谢 展开
希望大家说得清楚一些,把相关的代码段发上来。谢谢 展开
3个回答
推荐于2016-11-01 · 知道合伙人软件行家
关注
展开全部
//BIN_LIB为JAR包中存放DLL的路径
//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());
}
浙江启扬智能科技有限公司
2023-06-12 广告
2023-06-12 广告
Linux 嵌入式系统中,USB 启动模式能够烧写 ARM 的 uboot 的原因主要有以下几个方面:1. USB 启动模式相对于传统的 BIOS 启动模式来说,具有更高的兼容性和灵活性,可以支持更多的硬件设备和操作系统。2. USB 启动...
点击进入详情页
本回答由浙江启扬智能科技有限公司提供
展开全部
这个问题是由于 类加载器 造成的
ClassLoader
你对ClassLoader了解么?
你对 boot ClassLoader了解么?
如过不清楚的话,请查看一下 Java类加载机制.
ClassLoader
你对ClassLoader了解么?
你对 boot ClassLoader了解么?
如过不清楚的话,请查看一下 Java类加载机制.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议看看CSDN上的这个帖子http://topic.csdn.net/t/20041015/09/3458094.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询