动态链接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. 最后使用这些链接来操作数据库.