java 动态库卸载_java 卸载动态链接库

java 动态库卸载_java 卸载动态链接库importjava.lang.reflect.Field;importjava.lang.reflect.Method;importjava.util.Iterator;importjava.util.Vector;publicclassFreeDynamicDll{static{//首先确保这些dll文件存在System.load(“c:/test/Decode.dll”);…

大家好,又见面了,我是你们的朋友全栈君。

import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.util.Iterator;

import java.util.Vector;

public class FreeDynamicDll {

static {

// 首先确保这些dll文件存在

System.load(“c:/test/Decode.dll”);

}

/**

* 卸载已经装载的dll

*

* @param dllName

* 库名,如Decode.dll

*/

private synchronized void freeDll(String dllName) {

try {

ClassLoader classLoader = this.getClass().getClassLoader();

Field field = ClassLoader.class.getDeclaredField(“nativeLibraries”);

field.setAccessible(true);

Vector libs = (Vector) field.get(classLoader);

Iterator it = libs.iterator();

Object o;

while (it.hasNext()) {

o = it.next();

Field[] fs = o.getClass().getDeclaredFields();

boolean hasInit = false;

for (int k = 0; k < fs.length; k++) {

if (fs[k].getName().equals(“name”)) {

fs[k].setAccessible(true);

String dllPath = fs[k].get(o).toString();

if (dllPath.endsWith(dllName)) {

hasInit = true;

}

}

}

if (hasInit) {

Method finalize = o.getClass().getDeclaredMethod(

“finalize”, new Class[0]);

finalize.setAccessible(true);

finalize.invoke(o, new Object[0]);

it.remove();

libs.remove(o);

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String args[]) {

FreeDynamicDll t = new FreeDynamicDll();

t.freeDll(“Decode.dll”);

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144205.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 单例模式[通俗易懂]

    Java 单例模式[通俗易懂]单例模式(SingletonPattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。…

    2022年7月9日
  • postgresql 索引类型[通俗易懂]

    postgresql 索引类型[通俗易懂]postgresql提供了B-tree,R-tree,GiST和hash索引类型。不同的索引类型适合特定的查询类型。绝大多数数据库都支持B-tree索引类型,postgresql默认的createindex语句也是创建B-tree索引。 R-tree:R树是一种用于处理多维数据的数据结构,用来访问二维或者更高维区域对象组成的空间数据.R树是一棵平衡树。树上有两类结点:叶子结点和非

    2022年5月25日
  • python爬虫的思路总结

    python爬虫的思路总结爬虫是一个比较容易上手的技术,也许花5分钟看一篇文档就能爬取单个网页上的数据。但对于大规模爬虫,完全就是另一回事,并不是1*n这么简单,还会衍生出许多别的问题。系统的大规模爬虫流程如图所示。先检查

    2022年7月3日
  • python怎么读取xlsx文件_arcgis地理加权回归

    python怎么读取xlsx文件_arcgis地理加权回归空间计量经济学打破大多数经典统计和计量分析中相互独立的基本假设,主要解决如何在横截面数据和面板数据的回归模型中处理空间相互作用(空间自相关)和空间结构(空间不均匀性)分析的问题。空间计量经济理论认为一个地区空间单元上的某种经济地理现象或某一属性值与邻近地区空间单元上同一现象或属性值是相关的。也就是说,各区域之间的数据存在与时间序列相关相对应的空间相关。空间计量模型所研究的空间效应包括空间自相关和空…

    2022年8月31日
  • spring boot 实现全局404页面「建议收藏」

    spring boot 实现全局404页面「建议收藏」springBoot2.0版本以下importorg.springframework.boot.autoconfigure.web.ErrorController;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;…

    2022年7月27日
  • 六、小程序|App抓包-移动端抓包app-抓包「建议收藏」

    六、小程序|App抓包-移动端抓包app-抓包「建议收藏」小程序|App抓包移动端抓包app-抓包 ———-IOS设备系统———一、IOS抓包IOS(thor+anubis)app应用市场下载即可:首次安装需要配置证书:抓包:简单测试抓取部分数据包:查看详细数据包内容:点击数据包查看详情:一直摁着,选择重放可进行重放测试thor跳转anubisanubis相关功能点和界面:重放记录:可修改重放:也可进行其他的导出操作:可以将数据包导出联合burp重放———-Android设备系统———二、android移动

    2022年5月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号