- 浏览: 574104 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (174)
- JBPM (3)
- WWF (0)
- JavaScript (11)
- J2EE (40)
- OperationSystem (11)
- 数据库 (12)
- CSS (1)
- Ajax (2)
- J2SE (30)
- Tools (10)
- 服务器中间件 (3)
- 异常 (0)
- Flex (5)
- jQuery (11)
- html (9)
- Ejb (1)
- HTML5 Shiv–让该死的IE系列支持HTML5吧 (1)
- Spring (9)
- Quartz (3)
- log4j (1)
- maven (1)
- cpdetector (1)
- JSON (1)
- log4jdbc (1)
- asm (8)
- FusionCharts (1)
- jqplot (1)
- highcharts (1)
- excanvas (1)
- html5 (1)
- jpcap介绍 (1)
- weblogic (3)
- URLURLClassLoader (0)
- URLClassLoader (1)
- ant (2)
- ivy (2)
- nexus (1)
- IT (0)
- LoadRunner (1)
- SCSS (1)
- ruby (1)
- webstorm (1)
- typescript (1)
- Jboss7 (1)
- wildfly (1)
- oracle (5)
- esb (0)
- dubbo (2)
- zookeeper (3)
- eclipse (1)
- Android (2)
- Studio (1)
- Google (1)
- 微信 (1)
- 企业号 (1)
- Linux (13)
- Oracle12c (1)
- Hadoop (1)
- InletexEMC (1)
- Windows (1)
- Netty (3)
- Marshalling (2)
- Protobuf (1)
- gcc (1)
- Git (1)
- GitLab (1)
- shell (2)
- java (3)
- Spring4 (1)
- hibernate4 (1)
- postgresql (1)
- ApacheServer (2)
- Tomcat (2)
- ApacheHttpServer (2)
- realvnc (1)
- redhat (7)
- vncviewer (1)
- LVS (4)
- LVS-DR (1)
- RedHat6.5 (5)
- LVS-NAT (1)
- LVS-IPTUNNEL (2)
- LVS-TUN (1)
- keepalived (2)
- yum (1)
- iso (1)
- VMware (1)
- redhat5 (1)
- ha (1)
- nginx (2)
- proguard (1)
- Mat (1)
- DTFJ (1)
- axis2 (1)
- web service (1)
- centos (1)
- random (1)
- urandom (1)
- apache (1)
- IBM (1)
- cve (1)
- 漏洞 (1)
- JDBC (1)
- DataSource (1)
- jdk (1)
- tuxedo (2)
- wtc (1)
最新评论
-
skying007:
好资料,谢谢分享给啊
FusionCharts在服务器端导出图片(J2EE版) -
cgnnzg:
大神好 可以发一份源码给我学习么 多谢了 978241085 ...
springmvc+dubbo+zookeeper -
jifengjianhao:
求源码:854606899@qq.com
springmvc+dubbo+zookeeper -
wdloyeu:
shihuan8@163.com邮箱网盘在哪,没找到。能给份源 ...
Java Socket长连接示例代码 -
huangshangyuanji:
求代码:45613032@qq.com
springmvc+dubbo+zookeeper
使用概要:
File file = new File(jar文件全路径);
URL url = file.toURL();
URLClassLoader loader = new URLClassLoader(new URL[] { url });
Class tidyClazz = loader.loadClass(所需class的含包名的全名);
笔者案例:
示例代码:
log4j.properties文件代码如下:
JarLoadUtil.java文件代码如下:
TestUrlClassLoader.java文件代码如下:
运行TestUrlClassLoader.java文件中的main方法即可。
或者在dos窗口执行ant命令后进入%PROJECT_HOME%/dist/jar目录,执行java -jar myapp-${日期}.jar
File file = new File(jar文件全路径);
URL url = file.toURL();
URLClassLoader loader = new URLClassLoader(new URL[] { url });
Class tidyClazz = loader.loadClass(所需class的含包名的全名);
笔者案例:
示例代码:
log4j.properties文件代码如下:
log4j.rootLogger=debug,appender1 log4j.appender.appender1=org.apache.log4j.ConsoleAppender log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
JarLoadUtil.java文件代码如下:
package com.shihuan.urlclassloader; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; import org.apache.commons.lang.SystemUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class JarLoadUtil { private static Logger logger = LoggerFactory.getLogger(JarLoadUtil.class); private static URLClassLoader loader = null; /* * 加载lib目录下所有jar文件,并返回相应的的URLClassLoader */ public static URLClassLoader getURLClassLoader() { if (loader == null) { String fileNames[] = listFileNames(); if (fileNames != null && fileNames.length > 0) { URL urls[] = new URL[fileNames.length]; for (int i = 0; i < fileNames.length; i++) { try { StringBuilder sb = new StringBuilder(); sb.append("file:").append(SystemUtils.FILE_SEPARATOR).append(System.getProperty("user.dir")).append(SystemUtils.FILE_SEPARATOR).append("lib"); urls[i] = new URL(sb.toString() + SystemUtils.FILE_SEPARATOR + fileNames[i]); } catch (MalformedURLException e) { logger.error("加载lib目录下jar文件出错!", e); throw new RuntimeException("加载lib目录下jar文件出错!", e); } } loader = new URLClassLoader(urls); } } return loader; } /* * 查询lib目录下的所有文件名称 */ private static String[] listFileNames() { File file_directory = new File("lib"); return file_directory.list(); } }
TestUrlClassLoader.java文件代码如下:
package com.shihuan.test; import java.net.URLClassLoader; import java.sql.Connection; import java.sql.Driver; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import org.logicalcobwebs.proxool.ProxoolDataSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.shihuan.urlclassloader.JarLoadUtil; public class TestUrlClassLoader { private static Logger logger = LoggerFactory.getLogger(TestUrlClassLoader.class); /** * @param args */ public static void main(String[] args) { URLClassLoader loader = JarLoadUtil.getURLClassLoader(); ProxoolDataSource ds = new ProxoolDataSource(); ds.setDriver("com.mysql.jdbc.Driver"); ds.setDriverUrl("jdbc:mysql://localhost:3306/myword"); ds.setUser("root"); ds.setPassword("12345678"); Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; Class<?> clazz = null; try { clazz = loader.loadClass(ds.getDriver()); Driver driver = (Driver)clazz.newInstance(); Properties p = new Properties(); p.put("user", ds.getUser()); p.put("password", ds.getPassword()); conn = driver.connect(ds.getDriverUrl(), p); logger.info(conn.toString()); String sql = "select id,name from mytaba"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()) { System.out.println(rs.getInt("id") + " -- " + rs.getString("name")); } rs.close(); pstmt.close(); conn.close(); } catch (ClassNotFoundException e) { logger.error(e.getMessage(), e); } catch (InstantiationException e) { logger.error(e.getMessage(), e); } catch (IllegalAccessException e) { logger.error(e.getMessage(), e); } catch (SQLException e) { logger.error(e.getMessage(), e); } finally { try { if (rs != null) { rs.close(); } if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
运行TestUrlClassLoader.java文件中的main方法即可。
或者在dos窗口执行ant命令后进入%PROJECT_HOME%/dist/jar目录,执行java -jar myapp-${日期}.jar
发表评论
-
JDK中的随机数机制探究
2017-05-31 21:25 1912今天有同事问起关于JDK1.8中默认是random问题 ... -
Netty5 AIO
2015-11-25 21:18 1657工程结构图: TimeServer.java文件内容如下: ... -
JDK1.7 AIO
2015-11-24 22:32 1021工程结构图: Helper.java文件内容如下: p ... -
java JAVA_OPTS javaagent
2015-11-23 15:48 1476附件里java JAVA_OPTS -javaagent的程序 ... -
dubbo源代码调试
2015-09-24 17:06 4167今天同事要调试zookeeper+dubbo源代码,所以做了以 ... -
any+ivy的使用
2014-11-29 16:25 2056javapro-用ivy编译版本.rar文件时示例代码。 i ... -
将输出流OutputStream转化为输入流InputStream的方法
2014-07-19 22:27 27624将输出流OutputStream转化为输入流InputSt ... -
JVM启动参数大全
2014-06-11 17:19 963http://www.blogjava.net/midstr/ ... -
Java实现aop案例
2014-04-27 11:33 1303MyPersonService.java代码如下: pac ... -
Java Socket长连接示例代码
2014-04-07 13:42 21720SocketListenerPusher.java代码如下: ... -
Java多线程文档
2013-10-06 10:56 1178附件里是Java多线程的pdf文档,写的比较好,可参考。 ... -
利用jackson包进行json字符串与pojo类之间的转换源代码
2012-10-05 19:35 1923附件里是利用jackson包进行json字符串与pojo类之间 ... -
Java Swing开发的文件内容加密
2012-09-02 14:52 1192主要是javax.swing.JFrame和java.awt. ... -
mysql和Oracle在对clob和blob字段的处理
2012-08-25 18:50 30846一、MySQL与Oracle数据库如何处理Clob,Bl ... -
用JAVA Bean 反射得到set,get方法
2011-10-17 19:39 9034/** * java反射bean的get方法 ... -
Oracle自带连接池应用
2011-08-31 13:27 2032依赖ojdbc14.jar包 OraclePooled.ja ... -
利用commons-digester3-30.jar解析xml文件
2011-08-28 14:05 3943此方式解析需要commons-beanutils-1.8.3. ... -
非阻塞的HTTP服务器
2011-08-27 21:23 1311附件里为非阻塞HTTP服务器的相关Java代码。 HttpS ... -
Java.nio
2011-08-27 21:17 1361附件里为阻塞模式、非阻塞模式、阻塞和非阻塞的混合模式代码。 ... -
Java中数字转大写货币(支持到千亿)
2011-08-17 20:20 2784public class MoneyToOther { / ...
相关推荐
该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件pac
使用URLClassLoader加载本地文件夹c盘下的test.jar文件
执行链实际为:URLClassLoader.class.getConstructor(java.net.URL[].class).newInstance(new
NULL 博文链接:https://yklovejava-163-com.iteye.com/blog/1736631
Springboot + Hutool-db 使用 URLClassLoader 动态加载外部数据库和数据池 jar包实例
华为编程规范和范例,提供一个规范代码的参考,提到代码的可阅读性.
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang....
C_C_和Java安全编码实践提示与技巧,C_C_和Java安全编码实践提示与技巧,C_C_和Java安全编码实践提示与技巧
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(NativeMethod) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at sun.misc....
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang....
at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController....
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.load...
at java.net.URLClassLoader.findClass(URLClassLoader.java:434) at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204) at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:688...
创建 URLClassLoader 类加载器 * 2.获取当前执行的classpath的所有jar包的路径 * 3.通过java的ToolProvider创建JavaCompile,用来执行class源文件 * 4.创建DiagnosticCollector用来执行获取执行失败的错误结果 *...
at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.load...
3. 自定义URLClassLoader。检查实现类.class文件的修改时间,如果是更新的.class文件则重新加载该实现类的class。 4. 调用方法前,先获取最新的代理类,然后调用代理类的方法。 这样,每次调用代理类中的方法,都会...
加载jar这一部分很容易,可是卸载jar就没那么容易了。加载jar的时候需要用反射去调用URLClassLoader的addURL方法。}%>jars.jar内