java 解除安裝動態連結庫
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<Object> libs = (Vector<Object>) field.get(classLoader);
Iterator<Object> 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");
}
}
相關推薦
java 解除安裝動態連結庫
import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Iterator; import java.util.Vector; public class FreeDyna
使用Java呼叫dll動態連結庫
一:什麼是dll? DLL(Dynamic Link Library)檔案為動態連結庫檔案,又稱“應用程式拓展”,是軟體檔案型別。在Windows中,許多應用程式並不是一個完整的可執行檔案,它們被分割成一些相對獨立的動態連結庫,即DLL檔案,放置於系統中。當我
淺談JAVA呼叫C++動態連結庫
如: public native 返回型別 方法名(引數列表); 注意,這些方法沒有方法體。。 程式中呼叫這裡的方法和呼叫平常的方法的方式是一樣的。 --------------------------------------------------------------------------
java 呼叫c++動態連結庫
JNI其實是Java Native Interface的簡稱,也就是java本地介面。它提供了若干的API實現了和Java和其他語言的通訊(主要是C&C++)。也許不少人覺得Java已經足夠強大,為什麼要需要JNI這種東西呢?我們知道Java是一種
關於顯示載入動態連結庫模組及解除安裝的問題
問題起因是,在一次模組解除安裝後,程式執行異常。遂對動態連結庫做一些測試。 動態庫載入方式有兩種,隱式載入和顯示載入,隱式載入包含xxx.lib匯入庫,在程式執行之前由動態載入器完成所有載入;顯示載入則使用LoadLibrary方式;具體資料可參考《程式設計師的自我修養:連結,裝載與庫》一書。 動態庫標頭檔案
Tensorflow安裝在windows 上面出現ImportError: DLL load failed: 動態連結庫(DLL)初始化例程失敗。
最近開始學習tensorflow,電腦是win10 64位系統的,已經安裝了python3.6.1 32位的,tensorflow只支援python64位的,所以直接安裝了Python64位3.6.1。直接使用pip install tenso
JAVA呼叫動態連結庫so檔案
最近專案在用到openjdk1.8時,出現以下異常,綜其原因是JDK1.8中libjavajpeg.so估計缺少某些函式。 記錄一下,這裡有一篇關於動態連結庫的文章,比較不錯,轉載推薦一下:http://www.cnblogs.com/duanxz/p/3651347.html Exception in t
使用Java的JNative呼叫dll動態連結庫
1,首先下載JNative的庫,其中包含JNative.jar, JNativeCpp.dll, libJNativeCpp.so這三個包。 JNative.jar是需要匯入到Java工程的lib下。 通過Build Path即可匯入
win10環境下MySql(5.7.21版本)安裝過程出現安裝MySQL無法定位程式輸入點fesetround於動態連結庫
Mysql 安裝時報錯: 無法定位程式輸入點fesetround於動態連結庫MSVCR120.dll上 解決方法:下載 Microsoft Visual C++ 2013 Redistributable Package 安裝 http
Win7安裝Oracle10 無法定位程式輸入點GetProcessImageFileNameW於動態連結庫PSAPL.DLL上
1,首先到資料庫的解壓包database\stage\prereq\db中,找到refhost.xml,右鍵選擇編輯,在檔案裡面找到5.2,新增6.1,儲存(如圖所見) <OPERATING_SYSTEM> <VERSION VALUE="6.1"/> <
Java通過JNI 呼叫動態連結庫DLL
JNI(Java Native Interface)Java本地介面,主要作用是實現java程式碼與C、C++編寫的程式碼互動。 在Android程式設計中,so庫的訪問也用到了jni技術。 理論多說無益,還是看java連線dll的實戰吧。如下: 例:java中呼叫demo.
JAVA通過JNI呼叫C++動態連結庫CLL(一)
簡介 本文筆者,詳細的演示JAVA通過JNI呼叫C++動態連結庫CLL的開發過程和涉及到知識點介紹,入門級簡單易懂 (一)Java本機介面(Java Native Interfa
windows server 2003 安裝軟體就報錯“無法定位程式輸入點Encodepointer於動態連結庫KERNEL32.dll上”
電腦一安裝軟體就報錯“無法定位程式輸入點Encodepointer於動態連結庫KERNEL32.dll上”,系統是用的2003,這臺電腦主要用於做伺服器的。 打完windows 2003server 的補丁就可以了 WindowsServer2003-KB9149
安裝jdk8出現無法定位程式輸入點regdeletekeyexa於動態連結庫ADVAPI32.dll上
官方的 jdk8 不支援xp, 在xp上安裝會提示 動態連結庫錯誤。 無法定位程式輸入點 RegDeleteKeyExA 於動態連結庫 ADVAPI32.dll 上。 xp安裝 jdk8 方法如下 1 用 7-zip 解壓 jdk-8-windows-i586.e
java jni呼叫c/c++的so動態連結庫簡易demo
需求: 工作中需要多個團隊協作開發,而不同團隊提供的程式語言不同,比較常見的是底層互動使用C++或c來實現任務排程,java層實現業務排程或者業務實現,正好有涉及到這方面的應用,就分享一下java使用jni呼叫linux中so檔案的幾個注意事項編寫簡易的
java呼叫C/C++生成的dll動態連結庫----藉助JNI
由於專案的需要,最近研究了java 呼叫DLL的方法,將如何呼叫的寫於此,便於日後查閱: 採用的方法是JNI:Java Native Interface,簡稱JNI,是Java平臺的一部分,可用於讓Java和其他語言編寫的程式碼進行互動。 下面是從網上摘取的JNI工作示意圖: 總體說明:先在JA
mysql5.7壓測工具sysbench dbt2安裝找不到lmysqlclient動態連結庫
問題 近期安裝linux centos6安裝mysql5.7後想用sysbench、dbt2進行壓測,死活安裝不上 cd /usr/local/sysbench make && make install 出現錯誤,lmysqlclient檔
Ubuntu 16.04 amd64架構下安裝使用i386程式動態連結庫依賴
設定啟用多架構 在終端輸入 dpkg –print-architecture 你將會看到像下面這樣的內容: amd64 這說明著你已經擁有了64位架構核心。 輸入 dpkg –pr
win10升級後,已經安裝的sql2000提示無法定位序數1於動態連結庫sqlunirl.dll解決辦法
轉自:http://blog.sina.com.cn/s/blog_a8dc361e0102wt37.html 解決方法: 1、首先取得許可權,TrustedInstaller許可權.只要將下面的登錄檔檔案匯入,就有TrustedInstaller許可權。 登錄檔
java中呼叫本地動態連結庫(*.DLL)的兩種方式詳解和not found library、打包成jar,war包dll無法載入等等問題解決辦法
我們經常會遇到需要java呼叫c++的案例,這裡就java呼叫DLL本地動態連結庫兩種方式,和載入過程中遇到的問題進行詳細介紹 1、通過System.loadLibrary("dll名稱,不需要字尾名