社区
Java SE
帖子详情
能动态修改CLASSPATH吗?比如新加了一个jar文件,程序不用重启就能装入里面的类?
HowUCan
2004-05-10 08:23:49
能动态修改CLASSPATH吗?比如新加了一个jar文件,程序不用重启就能装入里面的类?
我不想自己做ClassLoader,希望能动态修改ClassPath,让系统的ClassLoader能自己去找到
...全文
429
12
打赏
收藏
能动态修改CLASSPATH吗?比如新加了一个jar文件,程序不用重启就能装入里面的类?
能动态修改CLASSPATH吗?比如新加了一个jar文件,程序不用重启就能装入里面的类? 我不想自己做ClassLoader,希望能动态修改ClassPath,让系统的ClassLoader能自己去找到
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
allenhe
2004-07-12
打赏
举报
回复
URLClassLoader就可以了
根本不需要这么复杂的
qudong078
2004-07-12
打赏
举报
回复
ofbiz上的东东:
package org.ofbiz.base.start;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.StringTokenizer;
import java.util.Vector;
/**
* Class to handle CLASSPATH construction
* @author Jan Hlavat?
*/
public class Classpath {
Vector _elements = new Vector();
public Classpath() {}
public Classpath(String initial) {
addClasspath(initial);
}
public boolean addComponent(String component) {
if ((component != null) && (component.length() > 0)) {
try {
File f = new File(component);
if (f.exists()) {
File key = f.getCanonicalFile();
if (!_elements.contains(key)) {
_elements.add(key);
return true;
}
}
} catch (IOException e) {}
}
return false;
}
public boolean addComponent(File component) {
if (component != null) {
try {
if (component.exists()) {
File key = component.getCanonicalFile();
if (!_elements.contains(key)) {
_elements.add(key);
return true;
}
}
} catch (IOException e) {}
}
return false;
}
public boolean addClasspath(String s) {
boolean added = false;
if (s != null) {
StringTokenizer t = new StringTokenizer(s, File.pathSeparator);
while (t.hasMoreTokens()) {
added |= addComponent(t.nextToken());
}
}
return added;
}
public String toString() {
StringBuffer cp = new StringBuffer(1024);
int cnt = _elements.size();
if (cnt >= 1) {
cp.append(((File) (_elements.elementAt(0))).getPath());
}
for (int i = 1; i < cnt; i++) {
cp.append(File.pathSeparatorChar);
cp.append(((File) (_elements.elementAt(i))).getPath());
}
return cp.toString();
}
public URL[] getUrls() {
int cnt = _elements.size();
URL[] urls = new URL[cnt];
for (int i = 0; i < cnt; i++) {
try {
urls[i] = ((File) (_elements.elementAt(i))).toURL();
} catch (MalformedURLException e) {}
}
return urls;
}
public ClassLoader getClassLoader() {
URL[] urls = getUrls();
ClassLoader parent = Thread.currentThread().getContextClassLoader();
if (parent == null) {
parent = Classpath.class.getClassLoader();
}
if (parent == null) {
parent = ClassLoader.getSystemClassLoader();
}
return new URLClassLoader(urls, parent);
}
}
改变的代码如下:
private Classpath classPath = new Classpath(System.getProperty("java.class.path"));
System.setProperty("java.class.path", classPath.toString());
ClassLoader classloader = classPath.getClassLoader();
Thread.currentThread().setContextClassLoader(classloader);
主要是通过ClassLoader来完成应该可以满足你的要求。
HowUCan
2004-07-12
打赏
举报
回复
搞明白了,就用URLClassLoader;当jar文件更新时,先把原来已经new出来的对象置为null,然后用一个新的URLClassLoader装进来。
qudong078
2004-07-12
打赏
举报
回复
我比较懒,将它的东东全弄了出来,
有兴趣的话自己提取一下就可以了
raimundo
2004-05-12
打赏
举报
回复
新加一个jar还好办,可以用URLClassLoader,如果替换的话就要重写一个ClassLoader了,不过如果替换的话一般的手法还真没什么着,最好参考一下JBoss的Hot Deploy的实现
caiyanying732
2004-05-12
打赏
举报
回复
classLoader
tiger_wkh52741
2004-05-12
打赏
举报
回复
嗯,classLoader可以!
北极猩猩
2004-05-12
打赏
举报
回复
自己定义ClassLoader吧。
fast_time
2004-05-12
打赏
举报
回复
那你还得监听啊!!!
19830711
2004-05-12
打赏
举报
回复
up
HowUCan
2004-05-11
打赏
举报
回复
怎么用啊,能否介绍一下?
stonecsdn
2004-05-10
打赏
举报
回复
呵呵,使用ant
Java中Web
程序
修改
配置
文件
不
重启
服务器的方法
见:http://blog.sina.com.cn/s/blog_69398ed9010191jg.html 另:http://ekisstherain.iteye.com/blog/1701463 jrebel 、JavaRebel是什么另一博客:jrebel/JavaRebel 开发环境 1. JDK 2. MyEclipse
【翻译】WebSphere Application Server V7:理解
类
装入
器
说明:从word导入到博客,调整格式太麻烦了,我就不调整了,如果...WebSphere Application Server V7:理解
类
装入
器Java
类
装入
器介绍 2WebSphere
类
装入
器概述 5WebSphere扩展
类
装入
器 5应用
程序
和Web模块
类
装入
器 7处...
java制作
一个
应用
程序
_
一个
制作java小应用
程序
的全过程
一个
制作java小应用
程序
的全过程一、安装java软件:从网上下载jdk-7u25-windows-i586.exe,安装到C:\ProgramFiles\Java\jdk1.7.0_25。二、设置环境变量:1、右键点击“我的电脑”,左键双击“属性”,选“高级”,...
Java
类
的加载机制
概述 在开始正文之前,我们先看两张图 。...Java虚拟机把描述
类
的数据从Class
文件
加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java
类
型,这就是虚拟机的加载机.
你有真正理解 Java 的
类
加载机制吗?| 原力计划
作者|宜春责编 |Elle出品 | CSDN 博客你是否真的理解Java的
类
加载机制?点进文章的盆友不如先来做一道非常常见的面试题,如果你能做出来,可能你早已掌握并理解了Java的...
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章