Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类文件格式主要版本号列表?_Java_Version - Fatal编程技术网

Java类文件格式主要版本号列表?

Java类文件格式主要版本号列表?,java,version,Java,Version,我在另一篇文章中看到了Java的主要版本号列表: Java1.2使用主要版本46 Java1.3使用主版本47 Java1.4使用主版本48 Java5使用主版本49 Java6使用主版本50 Java7使用主版本51 Java8使用主版本52 Java9使用主版本53 Java10使用主要版本54 Java11使用主版本55 Java12使用主版本56 Java13使用主版本57 Java14使用主版本58 Java15使用主版本59 Java16使用主版本60 这个名单是从哪里来的?有没

我在另一篇文章中看到了Java的主要版本号列表:

  • Java1.2使用主要版本46
  • Java1.3使用主版本47
  • Java1.4使用主版本48
  • Java5使用主版本49
  • Java6使用主版本50
  • Java7使用主版本51
  • Java8使用主版本52
  • Java9使用主版本53
  • Java10使用主要版本54
  • Java11使用主版本55
  • Java12使用主版本56
  • Java13使用主版本57
  • Java14使用主版本58
  • Java15使用主版本59
  • Java16使用主版本60

这个名单是从哪里来的?有没有具体的参考资料?最好是显示次要版本的东西?

这些来自类版本。如果您试图在Java5运行时加载为Java6编译的内容,您将得到错误,不兼容的类版本,得到50,预期为49。或者类似的

有关更多信息,请参见字节偏移量7


还可以找到其他信息。

我在Wikipedia页面上找到了描述类文件格式的Java类文件版本列表:


在字节偏移量6和7下,列出了它们对应的Java VM的版本。

如果您对“类文件的错误编译器”有问题,可以通过Eclipse将项目的JRE更改为相应的JRE来解决

  • 构建路径
  • 配置生成路径
  • 将库更改为朋友最后显示的表的对应项
  • 创建“jar文件”并编译和执行
    我做到了,而且成功了

    如果类文件位于
    build/com/foo/Hello.class
    ,则可以使用以下命令检查编译的java版本:

    javap -v build/com/foo/Hello.class | grep "major"
    
    用法示例:

    $ javap -v build/classes/java/main/org/aguibert/liberty/Book.class | grep major
      major version: 57
    

    根据OP中的表格,主要版本57表示类文件被编译为JDK 13字节码级别

    主要版本号的官方来源:


    实际上,对于版本16,必须更新到较新的版本

    我在类的.lessfilter中使用javap,这样我就可以反编译并直接知道它们是用什么版本编译的

    *.class)
    echo "/** "
    javap -verbose "$1" | grep version | sed -e 's/50/Java6/' -e 's/51/Java7/' -e 's/52/Java8/' -e 's/53/Java9/' -e 's/54/Java10/' -e 's/55/Java11/' -e 's/56/Java12/' -e 's/57/Java13/'
    echo " **/"
    java -jar ~/bin/cfr-0.150.jar "$1" | enscript --color --language=ansi --highlight=java -o - -q
    ;;
    

    (试图在前面的答案中添加注释,但无法格式化代码,并认为这可能对其他人有用)

    有没有一种方法可以直接从javac回显主要版本号(类版本),而不使用现有类,如,
    javap-verbose MyClass
    ?不,没有。我注意到第三次编辑实际上删除了问题部分,并添加了此列表来源的参考(不是由OP完成的),从而将其转换为答案。但问题首先正是关于这一点。原始问题:“该列表来自何处?是否有具体的参考资料?最好是显示次要版本的内容?”请删除参考资料并再次添加该问题段落?否则这不是一个真正的问题,选择的答案在某种程度上是多余的。有趣的是,这个信息的最佳来源是这个问题,询问信息的最佳来源在哪里。