java.lang.UnsupportedClassVersionError: com/google/doclava/Doclava : Unsupported major.minor version 51.0 android build

java.lang.UnsupportedClassVersionError: com/google/doclava/Doclava : Unsupported major.minor version 51.0 android build

我正在尝试从 google 来源通过自己的 AOSP 构建。我按照 Google 文档中提到的步骤成功地构建了它并成功地用图像刷新了我的设备。但是,我在进行一些更改后尝试再次构建它(基本上只是添加了一些日志来玩弄它)。构建出错了。然后我再次尝试制作,它说 Javac 1.6 found。要求 Javac 1.7。然后我使用以下命令跟踪了这个特定问题的答案:

 update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1051      auto mode
* 1            /usr/lib/jvm/j2sdk1.6-oracle/bin/javac        315       manual mode
  2            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1051      manual mode

然后我选择了选项0。然后我再次尝试制作。这次失败并出现以下错误:

java.lang.UnsupportedClassVersionError: com/google/doclava/Doclava : Unsupported major.minor version 51.0 android build

看完这个问题的所有答案(我发现这个问题被问了很多次),我发现这是因为编译时间(高版本)和运行时间(低版本)JDK 不匹配,我应该使用 Java 1.7 重新编译它。我如何为 android 构建做到这一点?我也很惊讶为什么我在使用 Java 1.6 成功创建构建时收到错误 "Javac 1.6 found. Required Javac 1.7."。

此错误意味着您正在尝试加载 Java "class" 文件,该文件是使用比您安装的 Java 更新的版本编译的。

例如,您的 .class 文件可能是为 JDK 7 编译的,而您正在尝试 运行 它与 JDK 6

所以解决方案是:

  • 升级你的Java运行时间或
  • 如果您有源代码,请使用本地 Java 编译器(如果有的话)重新编译 class。

    javac FileName.java

访问此更多详细信息:How to fix java.lang.UnsupportedClassVersionError: Unsupported major.minor version

在这种情况下,这不是javac 的问题,而是javadoc 的问题。 要检查其版本:javadoc -J-version(是的,这很奇怪)。

所以,你必须使用:

update-alternatives --config javadoc