我接管了一个非常旧的项目,没有文档,我试图确定正确的库,尝试和反编译,并最终重新编译代码。
在互联网上,我看到了两种方法:检查清单文件并执行javap-vsample.class
当查看jar文件中的清单时,我看到以下内容:
Manifest-Version: 1.0
Created-By: 1.4.2_09 (Sun Microsystems Inc.)
字符串
但是当我对jar文件中的类执行javap -v时,它显示的是主版本46(java版本1. 2)
由于这是一个没有文档和没有移交的旧项目,任何代码更改都必须从原始jar中反编译,修改后使用相同的库重新编译,然后更新到jar中。因此,正确的图书馆非常重要。
所以问题是我应该看哪个版本,或者有没有更好的方法来实现我所需要的?
1条答案
按热度按时间von4xj4u1#
根本没有关系。
一个(清单中的
Created-By
)是用于编译类的Java版本,或者它可能是一个完全虚构的版本,因为它实际上不是由Java本身设置的,而是由创建JAR的任何构建工具或手动过程设置的。另一个是Java类版本,意味着编译类时使用的目标Java版本,即
-target 1.2
,或者在现代版本的Java中,-release nn
和nn
是类所需的Java版本。也就是说,我看不出这与“确定正确的库”有什么关系。此外,试图反编译代码来进行更改充满了问题,如果可能的话,你应该真正避免的事情(例如,通过使用实际的源代码(如果可用的话)。