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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL Server中的sp_executesql系统存储过程

    SQL Server中的sp_executesql系统存储过程sp_executesql语法 sp_executesql[@stmt=]stmt[    {,[@params=]N@parameter_name  data_type[,…n]}    {,[@param1=]value1[,…n]}] 参数[@stmt=]stmt 包含 Transact-SQL 语

    2022年5月21日
    29
  • html错误(一) Stack Overflow at line:0 IE下解决方案

    html错误(一) Stack Overflow at line:0 IE下解决方案一今天用IE测试发现一个很奇葩的问题:代码没有什么问题,但是在浏览器中会自动弹出一个错误如: 二错误原因分析2.1  重定义了系统的触发事件名称作为自定义函数名如: onclick/onsubmit… 都是系统保留的事件名称,不允许作为重定义函数名称。2.2 出现死循环,都提示:Stackoverflowatline:0,如:在图片对象定

    2022年7月15日
    12
  • Canny算子边缘检测原理及实现

    Canny算子边缘检测原理及实现写在前面Canny边缘检是在在1986年提出来的,到今天已经30多年过去了,但Canny算法仍然是图像边缘检测算法中最经典、先进的算法之一。相比Sobel、Prewitt等算子,Canny算法更为优异。Sobel、Prewitt等算子有如下缺点:没有充分利用边缘的梯度方向。 最后得到的二值图,只是简单地利用单阈值进行处理。而Canny算法基于这两点做了改进,提出了:基于边缘梯度…

    2022年5月7日
    71
  • jenkinsfile docker_dockerfile制作镜像

    jenkinsfile docker_dockerfile制作镜像前言之前我们用docker手动安装了jenkins环境,在jenkins中又安装了python3环境和各种安装包,如果我们想要在其他3台机器上安装,又是重复操作,重复劳动,那会显得很low,这里可以

    2022年7月31日
    30
  • 【编解码】从零开始写H264解码器(1) 总纲

    【编解码】从零开始写H264解码器(1) 总纲关于编解码的原理的书和文章自己一直在看,从入门到略懂,但是感觉有些零零碎碎,或不完整,似乎串不成体系。有些小功能,知道是知道,并不知道它的意义和作用,时间一长也会慢慢忘记。反思了一下,或许很多东西,还是需要自己动手做一遍,会理解的更深更透彻一些,就像费曼学习法,你能讲出来,才说明懂了,这个也一样,你能把功能实现出来,才说明你真的明白了里面的流程和逻辑。

    2022年6月22日
    60
  • python urlopen 乱码[通俗易懂]

    1234567importurllib2importsys content=urllib2.urlopen(‘http://xxx.com’).read()#thewebpageisencodedbyuft-8 type=sys.getfilesystemencodin

    2022年4月16日
    49

发表回复

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

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