当前位置:  开发笔记 > 编程语言 > 正文

升级第三方jar时,是否必须重新编译应用程序?

如何解决《升级第三方jar时,是否必须重新编译应用程序?》经验,为你挑选了2个好方法。

我有一个使用某些第三方API的java应用程序.由于各种补丁,第三方jar文件会相当频繁地更改,但API本身并不会经常更改.

每次第三方jar改变时,我是否必须重新编译我的应用程序?



1> Jon Skeet..:

如果API发生更改,即使您不需要对源代码进行任何更改,也应重新编译.如果API未更改,则无需重新编译.

"即使您不需要进行任何更改"的原因是某些与源兼容的更改可能不是二进制兼容的.例如,假设您当前正在呼叫:

public void foo(String x)

在以后的版本中,这将更改为:

public void foo(Object x)

显然你的代码仍然会编译,但它解析调用的方法会改变.

当然,这有点边缘.基本上,只要你知道API何时发生变化,你应该没问题.


我一直在不断修改常量值。如果常量(公共静态最终值)的* value *发生变化,则即使常量名(即API)未更改,您也需要重新编译。Java在编译时内联常量值。

2> Michael Borg..:

另一种理论上需要重新编译的情况是常量.常量的值字面上编译为使用它的类的字节码.如果在新版本的API中更改了值,则针对旧版本编译的任何内容都将继续使用旧值,这可能导致不同的行为并且很难诊断错误.

当然,没有大脑的API设计师如果可以避免它,就不会改变公共常量的值,但可能存在必要的情况.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有