Skip to content

Commit 9985441

Browse files
committed
Use Mac's java_home helper if available
1 parent 417cff2 commit 9985441

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

src/interceptors/jvm.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,14 @@ type JvmTarget = { pid: string, name: string, interceptedByProxy: number | undef
1313

1414
// Check that Java is present, and that it's compatible with agent attachment:
1515
const javaBinPromise: Promise<string | false> = (async () => {
16+
// Check what Java binaries might exist:
1617
const javaBinPaths = [
17-
// Check what Java binaries might exist:
18-
...(!!process.env.JAVA_HOME // $JAVA_HOME/bin/java is preferable
19-
? [path.join(process.env.JAVA_HOME!!, 'bin', 'java')]
20-
: []
21-
),
22-
...(await commandExists('java') // but any other Java in $PATH will do
23-
? ['java']
24-
: []
25-
)
26-
];
18+
await getMacJavaHome(), // Magic Mac helper for exactly this
19+
!!process.env.JAVA_HOME && // $JAVA_HOME/bin/java is standard
20+
path.join(process.env.JAVA_HOME!!, 'bin', 'java'),
21+
(await commandExists('java')) && // Fallback to java in $PATH
22+
'java'
23+
].filter(p => !!p) as string[];
2724

2825
// Run a self test in parallel with each of them:
2926
const javaTestResults = await Promise.all(javaBinPaths.map(async (possibleJavaBin) => ({
@@ -57,6 +54,16 @@ const javaBinPromise: Promise<string | false> = (async () => {
5754
return false;
5855
});
5956

57+
// Try to use use Mac's java_home helper (available since 10.5 apparently)
58+
async function getMacJavaHome() {
59+
if (!await commandExists('/usr/libexec/java_home')) return;
60+
61+
const result = await spawnToResult('/usr/libexec/java_home', ['-v', '1.9+']);
62+
if (result.exitCode != 0) return;
63+
else return path.join(result.stdout.trim(), 'bin', 'java');
64+
}
65+
66+
// Test a single binary, with a timeout:
6067
function testJavaBin(possibleJavaBin: string) {
6168
return Promise.race([
6269
spawnToResult(

0 commit comments

Comments
 (0)