加载jar

来源:互联网 发布:mac下方图标隐藏 编辑:程序博客网 时间:2024/06/10 00:07

asynchbase-1.6.0.jar

在c/s结构的应用中,很多时候我们都需要在启动时指定很多jar文件的路径,jar包少点还好,多了就很麻烦,还要维护他。

为方便起见,程序启动时,由main函数动态去加载指定路径下的jar文件到jvm,这样启动命令就干净了很多。

加载jar包的代码:


[java] view plaincopyprint?


  1. private static class JarLoader {  
  2.         private URLClassLoader urlClassLoader;  
  3.         public JarLoader(URLClassLoader urlClassLoader) {  
  4.             this.urlClassLoader = urlClassLoader;  
  5.         }  
  6.           
  7.         public void loadJar(URL url) throws Exception {  
  8.             Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);  
  9.             addURL.setAccessible(true);  
  10.             addURL.invoke(urlClassLoader, url);  
  11.         }  
  12.     }  
  13.   
  14. private static void loadjar(JarLoader jarLoader, String path) throws MalformedURLException, Exception{  
  15.         File libdir = new File(path);  
  16.         if (libdir != null && libdir.isDirectory()) {  
  17.               
  18.             File[] listFiles = libdir.listFiles(new FileFilter() {  
  19.                   
  20.                 @Override  
  21.                 public boolean accept(File file) {  
  22.                     // TODO Auto-generated method stub  
  23.                     return file.exists() && file.isFile() && file.getName().endsWith(".jar");  
  24.                 }  
  25.             });  
  26.               
  27.             for (File file : listFiles) {  
  28.                 jarLoader.loadJar(file.toURI().toURL());  
  29.             }  
  30.               
  31.         }else{  
  32.             System.out.println("[Console Message] Directory ["+path+"] does not exsit, please check it");  
  33.             System.exit(0);  
  34.         }  
  35.     }  
  36.   
  37. public static void main(String[] args) {  
  38.         JarLoader jarLoader = new JarLoader((URLClassLoader)ClassLoader.getSystemClassLoader());  
  39.   
  40.                 loadjar(jarLoader, System.getProperty("user.dir")+"/lib");  
  41.   
  42. }  



这样,我们在启动的时候就java -jar app.jar 就好了,其他Jar包由main函数搞定。


0 0
原创粉丝点击