7 ответов:
можно использовать
java_homeпомощник бинарных наOS Xдля того, что вы ищете.чтобы перечислить все версии установленного JDK:
$ /usr/libexec/java_home -V Matching Java Virtual Machines (2): 1.8.0_51, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home 1.7.0_79, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Homeчтобы запросить путь JAVA_HOME конкретной версии JDK, вы можете сделать:
$ /usr/libexec/java_home -v 1.7 /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home $ /usr/libexec/java_home -v 1.8 /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Homeвы можете воспользоваться вышеуказанными командами в своем скрипте следующим образом:
REQUESTED_JAVA_VERSION="1.7" if POSSIBLE_JAVA_HOME="$(/usr/libexec/java_home -v $REQUESTED_JAVA_VERSION 2>/dev/null)"; then # Do this if you want to export JAVA_HOME export JAVA_HOME="$POSSIBLE_JAVA_HOME" echo "Java SDK is installed" else echo "Did not find any installed JDK for version $REQUESTED_JAVA_VERSION" fiвы можете сделать if-else и проверить наличие нескольких разных версий java.
если вы предпочитаете Вывод XML, java_home также имеет опцию-X для вывода в XML.
$ /usr/libexec/java_home --help Usage: java_home [options...] Returns the path to a Java home directory from the current user's settings. Options: [-v/--version <version>] Filter Java versions in the "JVMVersion" form 1.X(+ or *). [-a/--arch <architecture>] Filter JVMs matching architecture (i386, x86_64, etc). [-d/--datamodel <datamodel>] Filter JVMs capable of -d32 or -d64 [-t/--task <task>] Use the JVM list for a specific task (Applets, WebStart, BundledApp, JNI, or CommandLine) [-F/--failfast] Fail when filters return no JVMs, do not continue with default. [ --exec <command> ...] Execute the $JAVA_HOME/bin/<command> with the remaining arguments. [-R/--request] Request installation of a Java Runtime if not installed. [-X/--xml] Print full JVM list and additional data as XML plist. [-V/--verbose] Print full JVM list with architectures. [-h/--help] This usage information.
просто типа
javac. Если он установлен, вы получаете информацию об использовании, иначе он просто спросит, хотите ли вы установить Java.
/usr/bin/java_homeинструмент возвращает 1, если java не установлен.таким образом, вы можете проверить, установлена ли java следующим образом:
/usr/libexec/java_home &> /dev/null && echo "installed" || echo "not installed"
ниже команда сработала довольно хорошо:
javac -versionЯ также вручную проверил, перейдя в папку Java на моем Mac
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk
Comments