平台:Ubuntu 15.04。
在构建 android 4.4.2_r1/或者 phablet 期间,它会被以下消息停止:
“您尝试使用错误版本的 Java 进行构建。您的版本是:Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 。正确的版本是:Java SE 1.6。”输出:
$ 制作 j 4 ................................................................................................................................................
检查构建工具版本...
您尝试使用不正确的 Java 版本进行构建。您的版本是:Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 。
正确的版本是:Java SE 1.6。
build/core/main.mk:168:*** 停止。停止。
我已经删除/卸载了所有的 openjdk,但每次检查 java 版本时,输出都是
$ java -版本
拾取 JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
Java 版本“1.6.0_45”
Java(TM) SE 运行时环境(版本 1.6.0_45-b06)
Java HotSpot(TM) 64 位服务器 VM(版本 20.45-b01,混合模式)
如果重新安装oracle-java6:
sudo apt-get install --reinstall oracle-java6-installer
在此过程中,我注意到以下消息:
“update-binfmts:警告:当前包是 oracle-java6,但二进制格式已由 openjdk-7 安装”
如果应用“sudo dpkg --list | grep -i jdk”,输出:
:~$ sudo dpkg --list | grep -i jdk
ii oracle-java6-installer 6u45-0~webupd8~8 所有 Oracle Java(TM) 开发工具包 (JDK) 6
rc oracle-java7-installer 7u80+7u60arm-0~webupd8~0 所有 Oracle Java(TM) 开发工具包 (JDK) 7
我认为,“openjdk-7 已经安装的二进制格式”仍然存在可能是原因。
那么,问题是:如何删除openjdk-7已经安装的二进制格式?
答案1
问题已解决,我执行的步骤如下:
sudo rm /var/lib/binfmts/jar
jayatana
从 Ubuntu 软件中心删除该软件包。删除所有与 Java 相关的软件包(Sun、Oracle、OpenJDK、IcedTea 插件、GIJ):
sudo apt-get update apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove sudo apt-get -y autoremove
清除配置文件:
dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge
删除 Java 配置和缓存目录:
sudo bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf
删除手动安装的 JVM:
sudo rm -rf /usr/lib/jvm/*
sudo apt-get update
- 重启
重新安装oracle-java6:
sudo apt-get install oracle-java6-installer
参考:如何彻底卸载Java?
答案2
运行这个命令对我来说是这样的:
sudo update-binfmts --package openjdk-7 --remove jar /usr/bin/jexec
sudo dpkg-reconfigure openjdk-13-jre-headless
答案3
我遇到了类似的问题,openjdk-11 的残余部分与 openjdk-17 冲突。上述解决方案为我指明了正确的方向,但至少在我的情况下略有不完整。
首先我找到了残留的 openjdk-11 包:
dpkg --list | grep openjdk-11
然后我清除了那些包,例如:
sudo apt purge openjdk-11-jre openjdk-11-jre-headless
接下来我更新了 binfmts 以删除 openjdk-11:
sudo update-binfmts --package openjdk-11 --remove jar /usr/bin/jexec
上面的解决方案使用 dpkg-reconfigure 但是我确实重新安装了:
sudo apt reinstall openjdk-17-jre openjdk-17-jre-headless