動態鏈接java
① eclipse中的java工程項目如何引用外部jar包和dll動態鏈接庫
1、引用jar包
絕對路徑引用:右鍵工程-->properties-->Java Build Path-->Libraries-->Add external JARs... ,在彈出的對話框中選擇要引入的jar包,OK即可。
相對路徑引用:首先在工程目錄下,新建一個libs文件夾,將要導入的jar包放入其中,然後右鍵工程-->properties-->Java Build Path-->Libraries-->Add JARs... ,在彈出的對話框中選擇libs文件夾下的jar包即可。
2、引用dll動態鏈接庫
絕對路徑引用:右鍵工程-->properties-->java Build Path-->Source,點開工程,選擇Native libraries location....,點擊右側的edit..-->external Folder...,選擇要引入的dll文件所在文件夾即可。
相對路徑引用:首先在工程目錄下,新建一個libs文件夾,將要導入的dll文件包放入其中,右鍵工程-->properties-->java Build Path-->Source,點開工程,選擇Native libraries location....,點擊右側的edit..-->Workspace..,選擇libs文件夾即可。
② java 載入動態鏈接庫怎麼使用相對路徑
用 System.loadLibrary() 載入 Native 庫的搜索路徑:
String libPath = System.getProperty("java.library.path");
StringTokenizer tkzr = new StringTokenizer(libPath, ";");
while (tkzr.hasMoreTokens())
out.println(tkzr.nextToken());
也可用 System.load() 載入指定路徑的 Native 庫。
System.load(fl.getCanonicalPath() + "\my.dll");
而文件對象 fl 和路徑取得有以下方式:
File fl = new File(""); // 設定為當前文件夾
fl.getCanonicalPath(); // 獲取標準的路徑,拋出 IOException
fl.getAbsolutePath(); // 獲取絕對路徑,不拋出異常
getCanonicalPath() 解析 . 和 ..
getAbsolutePath() 不解析 . 和 ..
getPath() 返回 new File() 時設置的路徑
如當前的路徑為 C:\test
File fl = new File("abc");
fl.getCanonicalPath(); => C:\test\abc
fl.getAbsolutePath(); => C:\test\abc
fl.getPath(); => abc
③ java 載入動態鏈接庫怎麼使用相對路徑
java 載入動態鏈接庫使用相對路徑一般是不可以直接從jar文件中載入目標dll文件,需要分兩步:
1、從jar中拷貝dll文件
public static void loadJarDll(String name) throws IOException {
InputStream in = MyClass.class.getResourceAsStream(name);
byte[] buffer = new byte[1024];
int read = -1;
File temp = File.createTempFile(name, "");
FileOutputStream fos = new FileOutputStream(temp);
while((read = in.read(buffer)) != -1) {
fos.write(buffer, 0, read);
}
fos.close();
in.close();
System.load(temp.getAbsolutePath());
}
2、創建dll所在的相對路徑,用臨時了路徑過度:
ArrayList<String> bins = new ArrayList<String>(){{
add("/nm/metadata/bin/dependence1.dll");
add("/nm/metadata/bin/dependence2.dll");
add("/nm/metadata/bin/dependence3.dll");
add("/nm/metadata/bin/dependence4.dll");
add("/nm/metadata/bin/jniBin.dll");
}};
new File(new File(System.getProperty("java.io.tmpdir")), name)
④ 在Java中使用jdbc動態鏈接多個在不同伺服器上的資料庫,該怎麼做
1. 根據不同的資料庫載入不同的驅動:Driver = Class.forName()...; DriverManager
2. 根據資料庫的參數,建立不同的鏈接:DriverManager.getConnection()...
3. 定義一個數據結構(比如類),來管理這些不同的鏈接.
4. 最後使用這些鏈接來操作資料庫.