O Java 7 report não está instalado?

1

Ok, estou tentando criar uma ROM do Android, mas o seguinte erro é retornado;

************************************************************

You are attempting to build with the incorrect version
of java.

Your version is: Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
 java version "1.7.0_79" OpenJDK Runtime Environment (IcedTea 2.5.6)
(7u79-2.5.6-0ubuntu1.15.04.1) OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode).
The required version is: "1.7.x"

Please follow the machine setup instructions at
 https://source.android.com/source/initializing.html
************************************************************

Ao executar lunch aosp_grouper-userdebug .

Eu tentei instalar versões legadas do java 7 a partir do arquivo, mas não tenho idéia de como instalar duas versões do java 7 ao lado de um arquivo tar.

Ajuda?

Distro: Ubuntu 15.04

    
por Fallen Duck 23.08.2015 / 21:24

1 resposta

0

Em build / core / main.mk, o java_version_str contém a saída de "java -version":

Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-0ubuntu1.15.04.1)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)

O java_version deve extrair "1.7.0_79" usando grep. O cursor no início da expressão regular do grep "^ java" indica que o autor pretendia encontrar uma linha começando com "java". Infelizmente, as variáveis do GNU Make não armazenam os finais de linha. Então o grep só vê uma linha gigante começando com "Picked".

O grep funciona acidentalmente quando a "versão java" está na primeira linha. É provavelmente por isso que "unset _JAVA_OPTIONS" foi adicionado em java_version_str, porque estava causando problemas semelhantes.

A solução mais simples é seguir a solução de band-aid atual adicionando "unset JAVA_TOOL_OPTIONS" ao java_version_str:

java_version_str := $(shell unset _JAVA_OPTIONS && unset JAVA_TOOL_OPTIONS && java -version 2>&1)
javac_version_str := $(shell unset _JAVA_OPTIONS && unset JAVA_TOOL_OPTIONS && javac -version 2>&1)

A solução real seria não usar uma variável intermediária java_version_str e executar o grep diretamente:

java_version := $(shell java -version 2>&1 | grep '^java .*[ "]1\.7[\. "$$]')
javac_version := $(shell java -version 2>&1 | grep '[ "]1\.7[\. "$$]')
    
por Dominic 25.08.2015 / 21:09