Fondo:
Uso Macbook pro para desarrollar una aplicación Java, funciona bien. Mientras que, después de actualizar mac os de 10.x a la última versión Big Sur , mvn clean package arrojó la siguiente excepción:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project dq-common: Compilation failure [ERROR] Unable to locate the Javac Compiler in: [ERROR] /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/../lib/tools.jar [ERROR] Please ensure you are using JDK 1.4 or above and [ERROR] not a JRE (the com.sun.tools.javac.Main class is required). [ERROR] In most cases you can change the location of your Java [ERROR] installation by setting the JAVA_HOME environment variable. java -version :
jingxingdeMacBook-Pro:~ kevin$ java -version java version "1.8.0_271" Java(TM) SE Runtime Environment (build 1.8.0_271-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode) jingxingdeMacBook-Pro:dt-center-valid-4.0 kevin$ which java se cambió después de la actualización:
antes de:
ingxingdeMacBook-Pro:bin kevin$ which java /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home/bin/javaahora:
jingxingdeMacBook-Pro:~ kevin$ which java /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java cat ~/.bash_profile :
jingxingdeMacBook-Pro:~ kevin$ cat ~/.bash_profile export M2_HOME=/usr/local/apache-maven-3.6.3 #Mac OSX 10.5 or later version need this configure export JAVA_HOME=$(/usr/libexec/java_home) #export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home export MySQL_HOME=/usr/local/mysql export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:. export HADOOP_HOME=/Users/kevin/Desktop/Developments/Software/hadoop-3.3.0 PATH=$M2_HOME/bin:$JAVA_HOME/bin:$MySQL_HOME/bin:$HADOOP_HOME/bin:$PATH:. export PATHPregunta:
Por which java después de actualizar Mac OS, cómo solucionarlo.
Motivo: en ~/.bash_profile , JAVA_HOME= $(/usr/libexec/java_home) , después de la actualización, $(/usr/libexec/java_home) enlace a /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java que no existe en mi disco, por lo que falta jdk.
Solución: elimino jdk en /Library/Java/JavaVirtualMachines y reinstalo jdk8, y luego configuro JAVA_HOME como:
/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
en lugar de enlace suave y source ~/.bash_profile para que funcione.
Mi configuración completa:
kevinMacBook-Pro:bin kevin$ cat ~/.bash_profile export M2_HOME=/usr/local/apache-maven-3.6.3 #Mac OSX 10.5 or later version need this configure #export JAVA_HOME=$(/usr/libexec/java_home) #Mac 11 need this configure export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home export MySQL_HOME=/usr/local/mysql Ahora, jdk funciona, después de actualizar mac os, de hecho actualiza el enlace suave de $(/usr/libexec/java_home) y se vincula a un enlace que no existe, así que creo que no necesita eliminar su jdk, solo actualice env variables y vuelva a abrir el terminal para verificar si jdk se restableció correctamente.
Encuentre su ubicación de JDK (la mía era /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home ).
vim ~/.bash_profile (resp. edite el archivo de la forma en que esté acostumbrado)export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home )source ~/.bash_profileecho $JAVA_HOME para asegurarse de que la variable de entorno esté configurada correctamente