`

java中dll文件的加载和卸载。

阅读更多

一、在java中加载ddl文件的方法:

System.load(dllPath); //dllPath为dll文件的绝对路径。 或者

System.loadLibrary(libname); //libname为dll文件名,该dll要放到类路径中。

 

二、在java中卸载dll文件的方法:

 

    private void unloadNativeLibs() {
        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();
                Method finalize = o.getClass().getDeclaredMethod("finalize", new Class[0]);
                finalize.setAccessible(true);
                finalize.invoke(o, new Object[0]);
            }
        } catch (Exception ex) {
            log.error("卸载dll文件出错,需要重启服务器!", ex);
            throw new RuntimeException(ex);
        }
    }

 参考:http://www.diybl.com/course/3_program/java/javajs/2007910/71488.html

 

分享到:
评论
2 楼 lbs1026 2018-01-14  
您好,卸载后怎么再装上去呢?
1 楼 alvin198761 2012-01-09  
嗯,我看了源码,和你的思路一样,呵呵,但是 卸载了怎么再装上去呢??

相关推荐

    实现DLL的注入与卸载

    在提供的压缩包文件中,可能包含了实现DLL注入与卸载的相关源码和工具,这些资源可以帮助我们理解上述原理,并实际操作实现DLL的注入和卸载过程。通过学习和研究这些源码,开发者可以深入理解Windows系统内部的工作...

    Java加载dll,导致Java进程内存泄露

    如果DLL中分配了内存但未正确释放,或者Java和DLL之间对对象的引用处理不当,都可能导致内存泄露,使得Java进程的内存占用持续增长,影响系统性能。 描述中的“NULL”可能是博主在描述问题时的简化表示,通常在编程...

    IE 加载jre时需要的dll文件

    1. **jp2ssv.dll**:该DLL文件是Java Plug-in的一个组成部分,主要用于支持在IE中加载和运行Java Applet。当缺失或损坏时,可能导致IE无法正确识别并加载Java环境。 2. **jp2iexp.dll**:同样作为Java Plug-in的一...

    jvm.dll文件

    当你在尝试运行一个Java应用程序时,如果出现“无法加载 `jvm.dll`”的错误,通常意味着系统无法找到或正确识别这个动态链接库文件,这可能是由于多种原因造成的。 首先,错误提示建议检查JDK的版本。`jvm.dll` ...

    关于DLL动态库调用

    DLL(Dynamic Linkable Library)是一种动态库,允许在运行时动态加载和卸载模块,从而减少应用程序的大小和对内存空间的需求。DLL 由全局数据、服务函数和资源组成,在运行时被系统加载到进程的虚拟空间中,成为...

    java调用第三方dll

    本文将详细介绍如何在Java程序中调用第三方DLL,并以`java调用第三方dll终极版`为例进行深入探讨。 #### 二、基础知识 **1. DLL简介** - **定义**:DLL是Dynamic Link Library的缩写,即动态链接库。它是一种可...

    本项目是一个在单片机(如:STM32)上实现动态加载功能的函数库,与Windows中的dll,Linux中的so类似

    6. **卸载机制**:当不再需要某个动态加载的模块时,能够正确地释放资源并从内存中删除。 在项目"dynamic_loader-master"中,我们可以期待找到实现这些功能的相关源代码、头文件、示例程序和可能的文档资料。通过...

    键盘钩子实例(使用DLL和hook)

    在提供的压缩包中,`09KeyHookApp`可能是主应用程序,它负责加载和使用DLL以及处理用户界面。而`09KeyHookLib`则可能包含实现键盘钩子功能的DLL代码。 总的来说,这个实例展示了如何通过DLL和Windows钩子技术来实现...

    tsclib (1)_hung36w_TSCLib.dll_

    在提供的压缩包中,我们看到了`DLL工具.exe`,这可能是用于管理和操作DLL文件的工具,例如查看DLL信息、注册或卸载DLL等。这类工具可以帮助开发者调试和解决与DLL相关的错误,也可以用于检查`TSCLib.dll`的功能和...

    Delphi 卸载指定 网络IP进程内 已加载的扫描器

    在Delphi中,可以使用`FreeLibrary`函数来卸载一个已经加载的DLL。但是,需要注意的是,只有当没有其他代码依赖于这个DLL时,才能安全地卸载。因此,必须先确保没有其他部分的进程正在使用该扫描器。 以下是一些...

    可执行动态载入&输出其他文件模块.e.rar

    Windows系统中的.DLL(动态链接库)和Linux系统上的.so文件就是典型的动态链接库。 2. **动态加载(Dynamic Loading)**:这是指程序运行过程中根据需要加载代码或数据的能力。比如,当一个程序启动时并不需要所有...

    Unity安卓Dll热更新框架原工程

    Unity安卓Dll热更新框架是一种在游戏开发中常用的技术,它允许开发者在不更新整个应用程序的情况下,仅替换或更新游戏中的DLL(动态链接库)文件,从而实现快速修复bug、增加新功能或者优化性能。这种技术在游戏运营...

    多线程调用dll

    // DLL加载失败,处理错误 } ``` 现在,我们有了函数的指针,就可以在多线程环境中调用了。创建新线程通常涉及创建一个函数,该函数接收函数指针作为参数,并在线程上下文中调用DLL函数: ```cpp void thread...

    DLP.rar_dlp_dlp.rar_mtk 中间件_mtk动态加载_动态加载

    1. **MTK动态加载机制**:讲解MTK平台如何实现动态加载,可能涉及动态链接库(DLL)、共享对象(SO)或Java类的动态加载。 2. **中间件设计**:介绍中间件是如何在MTK平台上支持动态加载的,包括接口设计、通信协议...

    关于jacob的使用解决方案1

    描述中提到的情况是在Windows 10家庭版x64系统上,开发环境是Eclipse Mars 32位版本,搭配Java 1.7 32位JRE,并已正确配置了Jacob的jar包和对应的jacob-1.18-x86.dll。然而,当尝试使用最新版WPS 2016将doc文档转换...

    Java深度历险CH02

    这通常涉及到使用自定义类别加载器来管理类文件的加载和卸载过程。 #### 小结 《Java深度历险》第二章深入介绍了Java的类别加载器及其在实现动态性方面的重要作用。通过理解类别加载器的工作机制,开发者不仅能够...

    一个在单片机上实现动态加载功能的函数库,与Windows中的dll,Linux中的so类似,可以将代码动态地从其他的存储介质

    这个名为"dynamic_loader-master"的项目正是这样一种尝试,它实现了类似于Windows DLL(动态链接库)和Linux SO(共享对象)的功能,让单片机能够在运行时从外部存储介质中动态加载代码到RAM中执行。 动态加载库的...

Global site tag (gtag.js) - Google Analytics