【问题标题】:Android 5.0 build errors with Java version issue带有 Java 版本问题的 Android 5.0 构建错误
【发布时间】:2015-01-15 02:23:30
【问题描述】:

我当前在 Ubuntu 14.04 上运行的 java 版本是

java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

我已经输入了更改 java 版本的命令

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

  Selection    Path                                            Priority   Status
  ------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
* 1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1         manual mode

Press enter to keep the current choice[*], or type selection number: 1
test@test-ZX-530:/media/test/SSD/N7$ sudo 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   1071      auto mode
* 1            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1071      manual mode
  2            /usr/lib/jvm/java-7-oracle/bin/javac          1         manual mode

Press enter to keep the current choice[*], or type selection number: 1

配置后,java -version 没有变化。

当我尝试构建 Android 5.0 时,出现错误并显示以下错误消息:

============================================
Checking build tools versions...
************************************************************
You asked for an OpenJDK 7 build but your version is
java version "1.7.0_72" Java(TM) SE Runtime Environment (build 1.7.0_72-b14) Java     HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode).
************************************************************
build/core/main.mk:191: *** stop. Stop.

#### make failed to build some targets  ####

对此有什么想法吗?谢谢!

================================================ ====================================

我已经找到了这个问题的问题。

我运行的时候java版本是Openjdk

. build/envsetup.sh

但是,当我跑步时

lunch aosp_flo-userdebug

java 版本切换回 Java SE。

如果您有任何想法,请告诉我

谢谢

================================================ ==============================

嗨,

lunch aosp_flo-userdebug

我认为这个命令会检查我的配置并切换回 Java SE jdk 版本。

运行此命令并再次导出我的 OpenJDK 路径后,构建工作。

【问题讨论】:

    标签: android android-build


    【解决方案1】:

    构建 Kitkat 需要 Sun/Oracle JDK 6 版本,构建 Lollipop 需要 OpenJDK 7。目前,我的 Ubuntu 上有这两个项目。我使用脚本切换JDK版本,它可以工作。

    将jdk_switch.sh放到我的~目录下,运行以下命令切换jdk版本:

    $ . ./jdk_switch.sh jdk7
    $ . ./jdk_switch.sh jdk6
    

    JDK的路径是:

    /usr/lib/jvm/java-6-oracle/
    /usr/lib/jvm/java-7-openjdk-amd64/
    

    jdk_switch.sh的内容:

    #!/bin/bash
    case $1 in
        jdk6)
     export JAVA_HOME=/usr/lib/jvm/java-6-oracle/
     ;;
        jdk7)
     export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
     ;;
        *)
     export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
     ;;
    esac
    
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    
    java -version
    

    OpenJDK 7 版本是:

    java -version
    java version "1.7.0_65"
    OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.12.04.1)
    OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
    

    在您的情况下,导出 PATH 和 CLASSPATH 可能会有所帮助。或者只使用一个简单的 bash 脚本。希望对您有所帮助。

    【讨论】:

    • 谢谢。通过执行您的脚本,该脚本可以工作,但错误消息是相同的。如果您对此有任何想法,请告诉我。
    • @Sam,一定要重启终端。重新启动终端会话后,新的环境变量才会生效。
    • @SagarSakre,不。在我的情况下它不起作用。我已经发布了更新,它现在可以工作了。根本原因需要检查为什么lunch xxxx改变了java sdk的配置。
    【解决方案2】:

    build/core/main.mk 说:

    # For Java 1.7, we require OpenJDK on linux and Oracle JDK on Mac OS.
    requires_openjdk := false
    ifeq ($(HOST_OS), linux)
    requires_openjdk := true
    endif
    

    因此,基于 linux 构建的 Android 6 需要 OpenJDK 1.7,而 Ubuntu 16.04 存储库中不再提供该版本...

    我有几个解决方案:

    【讨论】:

      【解决方案3】:

      它对我有用,但你需要注意. ./jdk_switch.sh jdk7,你需要在这个终端中设置环境,这样你就不能在设置后./jdk_switch.sh jdk7。仔细检查您的环境:env|grep java

      【讨论】:

        【解决方案4】:

        仅 ./script 表示:仅运行该脚本。

        "../script" 等于 "source ./script":每个导出都将在您当前的 bash 环境中..

        【讨论】:

          【解决方案5】:

          只要跑 $ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 午餐前命令。 它为我工作

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-11-24
            • 2017-11-08
            • 1970-01-01
            • 2017-11-11
            • 1970-01-01
            • 2021-12-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多