1. 程式人生 > >通過URLClassLoader實現動態載入jar檔案

通過URLClassLoader實現動態載入jar檔案

Java程式碼 複製程式碼 收藏程式碼
  1. package t;  
  2. import java.net.URL;  
  3. import java.net.URLClassLoader;  
  4. import java.sql.Connection;  
  5. import java.sql.DatabaseMetaData;  
  6. import java.sql.Driver;  
  7. import java.util.Properties;  
  8. publicclass Test2 {  
  9.     publicstaticvoid main(String[] args) throws Exception {  
  10.         String url = "jdbc:sqlserver://localhost:1433;DatabaseName=loushang"
    ;  
  11.         String user = "sa";  
  12.         String password = "loushang";  
  13.         String driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  
  14.         String driverJar = "file:/D:/Desktop/sqljdbc4.jar";  
  15.         URL urls[] = new URL[] { new URL(driverJar)};  
  16.         URLClassLoader loader = new
     URLClassLoader(urls);  
  17.         Class<?> clazz = loader.loadClass(driverClass);  
  18.         Driver driver = (Driver)clazz.newInstance();  
  19.         Properties p = new Properties();  
  20.         p.put("user", user);  
  21.         p.put("password", password);  
  22.         Connection con = driver.connect(url, p);  
  23.         DatabaseMetaData meta = con.getMetaData();  
  24.         System.out.println("getDatabaseProductName()="+meta.getDatabaseProductName());  
  25.         System.out.println("getDatabaseProductVersion()="+meta.getDatabaseProductVersion());  
  26.         System.out.println("getDefaultTransactionIsolation()="+meta.getDefaultTransactionIsolation());  
  27.         System.out.println("getDriverName()="+meta.getDriverName());  
  28.         con.close();  
  29.     }  
  30. }  
package t;

import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.Driver;
import java.util.Properties;

public class Test2 {

	public static void main(String[] args) throws Exception {

		String url = "jdbc:sqlserver://localhost:1433;DatabaseName=loushang";
		String user = "sa";
		String password = "loushang";
		String driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
		String driverJar = "file:/D:/Desktop/sqljdbc4.jar";
		
		URL urls[] = new URL[] { new URL(driverJar)};
		URLClassLoader loader = new URLClassLoader(urls);
		Class<?> clazz = loader.loadClass(driverClass);
		Driver driver = (Driver)clazz.newInstance();
		
		Properties p = new Properties();
		p.put("user", user);
		p.put("password", password);
		
		Connection con = driver.connect(url, p);
		DatabaseMetaData meta = con.getMetaData();
		System.out.println("getDatabaseProductName()="+meta.getDatabaseProductName());
		System.out.println("getDatabaseProductVersion()="+meta.getDatabaseProductVersion());
		System.out.println("getDefaultTransactionIsolation()="+meta.getDefaultTransactionIsolation());
		System.out.println("getDriverName()="+meta.getDriverName());
		con.close();
	}
}

輸出結果:

Java程式碼 複製程式碼 收藏程式碼
  1. getDatabaseProductName()=Microsoft SQL Server  
  2. getDatabaseProductVersion()=8.00.760
  3. getDefaultTransactionIsolation()=2
  4. getDriverName()=Microsoft SQL Server 2005 JDBC Driver  
getDatabaseProductName()=Microsoft SQL Server
getDatabaseProductVersion()=8.00.760
getDefaultTransactionIsolation()=2
getDriverName()=Microsoft SQL Server 2005 JDBC Driver

關於URLClassLoader:

java.net
類 URLClassLoader

直接已知子類:MLet

public class URLClassLoader

extends SecureClassLoader該類載入器用於從指向 JAR 檔案和目錄的 URL 的搜尋路徑載入類和資源。這裡假定任何以 '/' 結束的 URL 都是指向目錄的。如果不是以該字元結束,則認為該 URL 指向一個將根據需要開啟的 JAR 檔案。