我正在尝试在 Ubuntu 14.04 64 位机器上从 android-x86.org 构建 Android-x86 KitKat 分支。
但是,当我运行 make 时,它运行了没多久就出现了一个错误,导致编译停止。这似乎是一个 Java 错误,我相信是由我安装的 JDK 版本引起的。
libcore/libdvm/src/main/java/java/lang/Enum.java:150: error: ordinal has private access in Enum
return ordinal - o.ordinal;
^
我知道 KitKat 需要 JDK 6,所以我安装了 OpenJDK6。我知道它没有完全支持,但没有什么可以说它绝对不会起作用。所以我还是试了一下。
无论如何,我的问题是我找不到安装 Oracle JDK 6 的方法。我尝试了一些存储库,但它们要么过时,要么不再有必要的软件包。我访问了 Oracle 网站存档,但它要求我注册“我的公司”的详细信息,而我不需要提供这些信息。
有什么方法可以安装旧版本的 Oracle JDK?
答案1
这可能是 OpenJDK 的问题。有时需要 Oracle JDK 才能正常工作。
一般来说,JDK 是向下兼容的,您也可以使用版本 8。
以下是安装教程:http://docs.oracle.com/javase/8/docs/technotes/guides/install/linux_jdk.html
如果你已经安装了(即:把它放在驱动器的某个位置)Oracle JDK,你可以使用以下命令选择它:
update-alternatives --config java
我之前遇到过这个问题,如果您想要的 JDK 未列出,则必须先将其添加到 update-alternatives 中:
sudo update-alternatives --install /usr/bin/java java /path/to/your/jdk/bin 1
代替/路径/到/你的与你的路径。
答案2
也许这有帮助:
diff --git a/libdvm/src/main/java/java/lang/Enum.java b/libdvm/src/main/java/java/lang/Enum.java
index 7a0f514..4b897aa 100644
--- a/libdvm/src/main/java/java/lang/Enum.java
+++ b/libdvm/src/main/java/java/lang/Enum.java
@@ -147,7 +147,7 @@
* @see java.lang.Comparable
*/
public final int compareTo(E o) {
- return ordinal - o.ordinal;
+ return ordinal - o.ordinal();
}
/**