From 468731538e3128fc843bdf13ca480898918212d4 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Wed, 9 Oct 2019 18:38:05 +0200 Subject: [PATCH] cmd/gogio: look for javac in JAVA_HOME if it is not in PATH Signed-off-by: Elias Naur --- cmd/gogio/androidbuild.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/cmd/gogio/androidbuild.go b/cmd/gogio/androidbuild.go index f995cae7..508103d1 100644 --- a/cmd/gogio/androidbuild.go +++ b/cmd/gogio/androidbuild.go @@ -77,6 +77,7 @@ func compileAndroid(tmpDir string, tools *androidTools, bi *buildInfo) (err erro if androidHome == "" { return errors.New("ANDROID_HOME is not set. Please point it to the root of the Android SDK") } + javac, err := findJavaC() ndkRoot := filepath.Join(androidHome, "ndk-bundle") if _, err := os.Stat(ndkRoot); err != nil { return fmt.Errorf("no NDK found in $ANDROID_HOME/ndk-bundle (%s). Use `sdkmanager ndk-bundle` to install it", ndkRoot) @@ -138,7 +139,7 @@ func compileAndroid(tmpDir string, tools *androidTools, bi *buildInfo) (err erro return err } javac := exec.Command( - "javac", + javac, "-target", "1.8", "-source", "1.8", "-sourcepath", appDir, @@ -442,6 +443,25 @@ func unzip(dir, zipfile string) (err error) { return nil } +func findJavaC() (string, error) { + javac, err := exec.LookPath("javac") + if err == nil { + return javac, err + } + javaHome := os.Getenv("JAVA_HOME") + if javaHome == "" { + return "", err + } + javac = filepath.Join(javaHome, "bin", "javac") + if runtime.GOOS == "windows" { + javac += ".exe" + } + if _, serr := os.Stat(javac); serr == nil { + return javac, nil + } + return "", err +} + func writeJar(jarFile, dir string) (err error) { jar, err := os.Create(jarFile) if err != nil {