通过URLClassLoader实现动态加载jar文件

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

java.lang.Object
  java.lang.ClassLoader
      java.security.SecureClassLoader
          java.net.URLClassLoader

直接已知子类:MLet


public class URLClassLoader

extends SecureClassLoader该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。这里假定任何以 '/' 结束的 URL 都是指向目录的。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件。

转载至:http://huangqiqing123.iteye.com/blog/1461418

 

你可能感兴趣的:(ClassLoader)