From 7dd847404fe24c997e4665d8ea878c9fe19179c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Thu, 1 Oct 2015 16:38:08 +0200 Subject: [PATCH] Android: Get Java home location from the java_home tool on OS X. If the java_home executable exists on OS X we can run it to get the current JDK location. Change-Id: I5d032d153cba4d7168931ab0f83723292d3d714a Reviewed-by: Daniel Teske --- src/plugins/android/androidconfigurations.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 79d41932ff8..889d1a46309 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -1483,9 +1483,19 @@ void AndroidConfigurations::load() saveSettings = true; } } else if (HostOsInfo::isMacHost()) { - QString javaHome = QLatin1String("/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home"); - if (QFileInfo::exists(javaHome)) - m_config.setOpenJDKLocation(FileName::fromString(javaHome)); + QFileInfo javaHomeExec(QLatin1String("/usr/libexec/java_home")); + if (javaHomeExec.isExecutable() && !javaHomeExec.isDir()) { + QProcess proc; + proc.setProcessChannelMode(QProcess::MergedChannels); + proc.start(javaHomeExec.absoluteFilePath()); + if (!proc.waitForFinished(2000)) { + proc.kill(); + } else { + const QString &javaHome = QString::fromLocal8Bit(proc.readAll().trimmed()); + if (!javaHome.isEmpty() && QFileInfo::exists(javaHome)) + m_config.setOpenJDKLocation(FileName::fromString(javaHome)); + } + } } else if (HostOsInfo::isWindowsHost()) { QSettings settings(QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Javasoft\\Java Development Kit"), QSettings::NativeFormat); QStringList allVersions = settings.childGroups();