〓〓当一个java文件变更了,如何确定哪些相关文件需要重新编译?〓〓

zcyxzh1111 2010-09-06 07:45:53
如题,比如我有个包packageXXX下面有三个相关java文件(A是B的成员对象)
另外的一些包import packageXXX.*
当A变更后,哪些需要重新编译呢。B应该要吧,而其他哪些引用packageXXX的包内文件呢,需要重新编译么?

大家最好能告诉我一个原则,按照此原则即可判断任何的情况 ???
...全文
176 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
霜之哀伤 2010-09-07
  • 打赏
  • 举报
回复
搂住是想研究一下原理呢,还是什么
yusixdou 2010-09-07
  • 打赏
  • 举报
回复
只编译改变的就偶ok了
shehun 2010-09-07
  • 打赏
  • 举报
回复
对于开发工具,你把工程clear下,自动就编译了!
Tassdars 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 humanity 的回复:]
不能说谁改了编译谁,还要看结构性变化,比如,方法里面的一条语句变了,那当然不用重编译其它的类,但是,如果有结构性变化,比如去掉了一个方法或改了参数列表,在源文件夹下的所有的调用者类都需要重新编译。
[/Quote]

不赞同,我觉得楼主的意思是说“必须”,而且假设B调用了A的方法,而A删掉了这个方法,调用B的时候会报错,这是没错,但是重点不是编译,而是你必须得去修改B中调用A的方法的代码,于是B这个类你也修改了,既然你修改了B和A两个类,自然两个类都需要重新编译,自然还是符合“修改谁编译谁”的原则,因为B的代码你不能不改,不是光靠编译不改B的代码就能解决的。
javametro 2010-09-07
  • 打赏
  • 举报
回复
不需要重新编译了,改了哪个就编译好那个。
不过,另外其他的类要是调用了这个类的方法被改了,其他类就也应该改一些东西。
zcyxzh1111 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 humanity 的回复:]

不能说谁改了编译谁,还要看结构性变化,比如,方法里面的一条语句变了,那当然不用重编译其它的类,但是,如果有结构性变化,比如去掉了一个方法或改了参数列表,在源文件夹下的所有的调用者类都需要重新编译。
[/Quote]
这里又说要编译呢,上面的都说不需要呢 ???
dr_lou 2010-09-06
  • 打赏
  • 举报
回复
ide保持既编译,当然请你选择自动编译。
humanity 2010-09-06
  • 打赏
  • 举报
回复
不能说谁改了编译谁,还要看结构性变化,比如,方法里面的一条语句变了,那当然不用重编译其它的类,但是,如果有结构性变化,比如去掉了一个方法或改了参数列表,在源文件夹下的所有的调用者类都需要重新编译。
oklinsong 2010-09-06
  • 打赏
  • 举报
回复
改哪个类编译哪个类
play_long 2010-09-06
  • 打赏
  • 举报
回复
HAOAO 贴四大皆空拉萨的
ZangXT 2010-09-06
  • 打赏
  • 举报
回复
javac自身就有make功能
closewbq 2010-09-06
  • 打赏
  • 举报
回复
对于开发工具,你把工程clear下,自动就编译了!
Tassdars 2010-09-06
  • 打赏
  • 举报
回复
不需要,哪个类改了你编译哪个就行了,虚拟机是动态地加载类的,也就是说A虽然是B的成员对象,但是A的字节码并没有保存在B中,而是执行到需要用到A这个成员变量的时候,虚拟机就会去classpath下面找这个类文件并加载,如果这个A类已经被改动并编译,它加载的自然就是改动后的类了。

至于同个包的类,都可能没关联,自然就更没必要了。

原则就是改类文件哪个编译哪个,就这么简单,没改动的不需要重新编译。其实如果有IDE的话,根本不用考虑这个问题的,Eclipse会自动编译。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧