如何删除openjdk-7已经安装的二进制格式

如何删除openjdk-7已经安装的二进制格式

平台: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

问题已解决,我执行的步骤如下:

  1. sudo rm /var/lib/binfmts/jar
  2. jayatana从 Ubuntu 软件中心删除该软件包。
  3. 删除所有与 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
    
  4. 清除配置文件:

    dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge
    
  5. 删除 Java 配置和缓存目录:

    sudo bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf
    
  6. 删除手动安装的 JVM:

    sudo rm -rf /usr/lib/jvm/*
    
  7. sudo apt-get update

  8. 重启
  9. 重新安装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

http://www.askmeaboutlinux.com/?p=3137

答案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

相关内容