jar的清单中的版本和使用javap的版本有什么区别

azpvetkf  于 2023-08-01  发布在  Java
关注(0)|答案(1)|浏览(130)

我接管了一个非常旧的项目,没有文档,我试图确定正确的库,尝试和反编译,并最终重新编译代码。
在互联网上,我看到了两种方法:检查清单文件并执行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中。因此,正确的图书馆非常重要。
所以问题是我应该看哪个版本,或者有没有更好的方法来实现我所需要的?

von4xj4u

von4xj4u1#

根本没有关系。
一个(清单中的Created-By)是用于编译类的Java版本,或者它可能是一个完全虚构的版本,因为它实际上不是由Java本身设置的,而是由创建JAR的任何构建工具或手动过程设置的。
另一个是Java类版本,意味着编译类时使用的目标Java版本,即-target 1.2,或者在现代版本的Java中,-release nnnn是类所需的Java版本。
也就是说,我看不出这与“确定正确的库”有什么关系。此外,试图反编译代码来进行更改充满了问题,如果可能的话,你应该真正避免的事情(例如,通过使用实际的源代码(如果可用的话)。

相关问题