我如何知道哪个版本的Java编译器被用来构建一个jar?我有一个jar文件,它可以构建在三个jdk中的任何一个中。我们需要确切知道是哪一个,这样我们才能证明兼容性。编译器版本是否嵌入到类文件或jar中?
当前回答
在Windows上执行以下操作:
使用WinZip / Java JAR命令解压或解压缩JAR文件。 将其中一个类文件拖放到Eclipse Java项目中。 打开类文件。
现在Eclipse将显示准确的主版本和次版本。
其他回答
您不一定能从JAR文件本身判断出来。
下载一个十六进制编辑器,打开JAR中的一个类文件,查看字节偏移量4到7。版本信息是内置的。
http://en.wikipedia.org/wiki/Java_class_file
注:如以下评论所述,
这些字节告诉你类是为哪个版本编译的,而不是 哪个版本编译了它。
我基于david的建议使用file命令构建了一个小bash脚本(在github上)
IntelliJ Users
安装插件Archive Browser
在Intellij中打开罐子通过从文件浏览器中拖拽jar文件,您可以简单地将jar添加到任何项目中。 浏览jar文件以找到一个类文件,IntelliJ的反编译器应该显示用于创建jar的Java版本。
你检查jar的Manifest文件 例子:
Manifest-Version: 1.0 创建者:1.6.0 (IBM Corporation)
一行程序(Linux)
解压-p mylib.jar META-INF/MANIFEST. jar曼氏金融
这将打印MANIFEST的内容。MF文件转换为stdout(希望你的jar文件中有一个:)
根据构建包的方式,您将在“Created-By”或“Build-Jdk”键中找到JDK版本。
推荐文章
- 如何格式化Joda-Time DateTime仅为mm/dd/yyyy?
- 如何在POM.xml中引用环境变量?
- 如何在android中复制一个文件?
- 将整数转换为字符串,以逗号表示千
- 接口方法的最终参数-有什么意义?
- Java中的@UniqueConstraint注释
- 如何在清洁模式下运行eclipse ?如果我们这样做会发生什么?
- 获取java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory异常
- Java中的正则表达式命名组
- c#和Java的主要区别是什么?
- 什么是NullPointerException,我如何修复它?
- 在Java中使用“final”修饰符
- 无法在Flutter上找到捆绑的Java版本
- 如何在Kotlin解析JSON ?
- 如何在新的材质主题中改变背面箭头的颜色?