社区
Java SE
帖子详情
在程序中怎样重新加载类啊?
juyib
2005-03-17 08:20:19
比如运行程序,发现其中的一个class有了新版本要更新
如何在不停止整个程序的情况下更新这个class啊?
谢谢
...全文
261
21
打赏
收藏
在程序中怎样重新加载类啊?
比如运行程序,发现其中的一个class有了新版本要更新 如何在不停止整个程序的情况下更新这个class啊? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DanielYWoo
2005-03-21
打赏
举报
回复
你的这种需求很常见的,你看看这个文章,很简单的
http://www-106.ibm.com/developerworks/edu/j-dw-javaclass-i.html?S_TACT=105AGX02&S_CMP=EDU
DanielYWoo
2005-03-21
打赏
举报
回复
>>因为java spec上说class unload的虚拟机实现是可选的,
这句话没错
>>而reload又必须先unload再load。
这就好像不对了。目前几乎所有的JVM都有支持reload的。
通常你把所有对某个Class的可达(reachable)引用消除之后,把Classloader也给释放掉,那么这个Class就可以被gc。Tomcat,WebLogic这些AppServer为什么可以再不重新启动的情况下部署一个servlet,也可以undeploy一个servlet,还可以替换一个servlet,就是这个原因,AppClassloader代理了对WebApp下面的所有的类的加载。ClassLoader是树形的向上查找的,如果你在App Server classpath里的类被你的WebApp用到,那么WebApp先找App classloader,没找到,然后才找System Classloader.如果是java的核心类,那就是Bootstrap加载的啦,那是一个用C写的本地classloader.
juyib
2005-03-21
打赏
举报
回复
这样讲吧,将class放在一个数据块中传送,数据块本身带有版本属性,在接收端将数据块拼起来,构造出程序并运行。由于数据不停传送,有可能更新。这样就需要替换以前数据块中传过来的类。
我已经知道这个好像不能做到。因为java spec上说class unload的虚拟机实现是可选的,而reload又必须先unload再load。目前只有少数虚拟机可以unload,reload.
zhyjxy
2005-03-21
打赏
举报
回复
学习中
喝酒吃肉
2005-03-18
打赏
举报
回复
这个应当是容器管理的吧
escalj
2005-03-18
打赏
举报
回复
有点不明白你要的是什么效果。】
我的理解是:
可以设计一个用于判断的方法来判断版本,该方法包含一个判断版本的标志。
然后在run-time根据标志来重新将引用定位到你需要版本的类。
Hodex
2005-03-18
打赏
举报
回复
有创意~~
xinghunhun
2005-03-18
打赏
举报
回复
给分就有答案
greennetboy
2005-03-18
打赏
举报
回复
不可能吧,必须要停止程序运行才能更换的吧
asa516
2005-03-18
打赏
举报
回复
不是太明白你的意思.
yuepengfei
2005-03-18
打赏
举报
回复
楼主的做法应该是不可行的
juyib
2005-03-18
打赏
举报
回复
再顶一下
OnlyFor_love
2005-03-18
打赏
举报
回复
把你的类import进来就可以了!
DanielYWoo
2005-03-18
打赏
举报
回复
这是一个很简单的问题。你需要自己用URLClassLoader把你要的类加载进来,或者你也可以用你自己写的ClassLoader. 看看下面这个东东你就明白了
http://www-106.ibm.com/developerworks/edu/j-dw-javaclass-i.html?S_TACT=105AGX02&S_CMP=EDU
shan1119
2005-03-17
打赏
举报
回复
不可能把,不停程序怎么编译?
hzy111
2005-03-17
打赏
举报
回复
路过,关注中 ... ...
enrico
2005-03-17
打赏
举报
回复
不懂
juyib
2005-03-17
打赏
举报
回复
谢谢,继承是可以,但不直接,没有其他方法了么?
「已注销」
2005-03-17
打赏
举报
回复
这个不知道
jverson
2005-03-17
打赏
举报
回复
不了解,还是帮你顶
加载更多回复(1)
java
类
重新
加载
_Java动态
类
加载
和
重新
加载
的详细介绍
本篇文章给大家带来的内容是关于Java动态
类
加载
和
重新
加载
的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Java
中
可以在运行时
加载
和
重新
加载
类
,虽然并不像我们想像
中
那么简单。本文将解释何时、怎样在Java
中
加载
、
重新
加载
类
。你可以争论动态
加载
类
是Java反射的一部分还是Java核心的一部分。不管怎样,我把它放在了Java反射
中
,因为没有更好的地方放置它。
类
加载
器Java...
java
类
重新
加载
_Java反射-动态
类
加载
和
重新
加载
Java
中
可以在运行时
加载
和
重新
加载
类
,虽然并不像我们想像
中
那么简单。本文将解释何时、怎样在Java
中
加载
、
重新
加载
类
。你可以争论动态
加载
类
是Java反射的一部分还是Java核心的一部分。不管怎样,我把它放在了Java反射
中
,因为没有更好的地方放置它。
类
加载
器Java
程序
的所有
类
都是使用java.lang.ClassLoader的一些子
类
加载
的。因此,动态
加载
类
也必须使用java.lang.Cla...
java
重新
加载
类
_java
重新
加载
类
的探寻
java
重新
加载
类
的探寻首先上结论:java
类
加载
器不支持
重新
加载
类
。如果想
重新
加载
,那就新建一个
类
加载
器。接下来慢慢讲:项目背景在近日做的一个项目
中
,有一个动态获取用户输入的代码,并进行运行的需求。现在遇到了这样的问题:用户输入的代码格式永远是固定的:public class Solution{public int calc(int num){// TODOreturn 0;}}而系统会运行该代...
java
重新
加载
class_在运行时Java
重新
加载
使用的
类
我正在研究一个监视目录的
程序
,并在看到目录
中
的更改时运行目录
中
的所有测试.这需要
程序
动态
加载
类
,而不是获取缓存副本.我可以动态
加载
测试
类
.在运行时检测并使用对测试的更改.但是,测试所测试的
类
不是这种情况.我的代码用于动态
加载
类
并返回测试
类
列表:List> classes = new ArrayList>();for (File file : classFiles) {String fu...
java
类
重新
加载
_如何在实例化时强制Java
重新
加载
类
?
小编典典没有希望“重载”new运算符,但是您当然可以编写一个自定义的
类
加载
器,该
类
加载
器在每次要求其
加载
类
时都简单地
重新
加载
字节码。开箱即用的
类
加载
器不会满足您的需求,因为它们都假定
类
定义在JVM的整个生命周期
中
都不会改变。但是,这就是您实现它的方式。创建一个称为
类
的
类
加载
器,该
类
加载
器Reloader将覆盖方法loadClass和findClass方法,以便每次调用它们时都从磁盘简单地
重新
加载
类
...
Java SE
62,622
社区成员
307,252
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章