Skip to content

Commit

Permalink
Fix for Java fingerprinter on macOS (#9225)
Browse files Browse the repository at this point in the history
Use alternative test for macOS JVM with /usr/libexec/java_home
  • Loading branch information
angrycub committed Nov 1, 2020
1 parent d986fa1 commit b5e6326
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
12 changes: 12 additions & 0 deletions drivers/java/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,18 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint {
return fp
}
}
if runtime.GOOS == "darwin" {
_, err := checkForMacJVM()
if err != nil {
// return no error, as it isn't an error to not find java, it just means we
// can't use it.

fp.Health = drivers.HealthStateUndetected
fp.HealthDescription = ""
d.logger.Trace("macOS jvm not found", "error", err)
return fp
}
}

version, runtime, vm, err := javaVersionInfo()
if err != nil {
Expand Down
24 changes: 24 additions & 0 deletions drivers/java/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,38 @@ import (
"fmt"
"os/exec"
"regexp"
rt "runtime"
"strings"
)

var javaVersionCommand = []string{"java", "-version"}
var macOSJavaTestCommand = "/usr/libexec/java_home"

func checkForMacJVM() (ok bool, err error) {
// test for java differently because of the shim application
var out bytes.Buffer
cmd := exec.Command(macOSJavaTestCommand)
cmd.Stdout = &out
cmd.Stderr = &out
err = cmd.Run()
if err != nil {
err = fmt.Errorf("failed check for macOS jvm: %v, out: %v", err, strings.Replace(strings.Replace(out.String(), "\n", " ", -1), `"`, `\"`, -1))
return false, err
}
return true, nil
}

func javaVersionInfo() (version, runtime, vm string, err error) {
var out bytes.Buffer

if rt.GOOS == "darwin" {
_, err = checkForMacJVM()
if err != nil {
err = fmt.Errorf("failed to check java version: %v", err)
return
}
}

cmd := exec.Command(javaVersionCommand[0], javaVersionCommand[1:]...)
cmd.Stdout = &out
cmd.Stderr = &out
Expand Down

0 comments on commit b5e6326

Please sign in to comment.