Skip to content

fix(sandbox): fail-fast op SDKman- en JAVA_HOME-fouten in Maven run.sh#39

Merged
mreuvekamp merged 3 commits into
mainfrom
fix/maven-launcher-fail-fast
May 26, 2026
Merged

fix(sandbox): fail-fast op SDKman- en JAVA_HOME-fouten in Maven run.sh#39
mreuvekamp merged 3 commits into
mainfrom
fix/maven-launcher-fail-fast

Conversation

@ericwout-overheid
Copy link
Copy Markdown
Collaborator

Summary

Adresseert twee out-of-scope bevindingen uit de PR #38-review over claude-sandbox/host-agents/maven/run.sh:

  1. SDKman-init swallowed errors. De oude vorm zette set +euo pipefail, sourcete sdkman-init.sh en hing een || echo "⚠️ …" aan de regel. Onder set +e retourneert de meeste sdkman-init-paden 0 ook bij interne problemen, dus de fallback-melding was effectief onbereikbaar voor partial-init-scenario's (kapot candidate-symlink, halve install). Nu vangen we $? expliciet op en loggen de exit-code als er iets misging.
  2. Missende JAVA_HOME → harde exit. Eerder een ⚠️ en doorgaan. Resultaat: een onbegrijpelijke fout verderop in Maven of de agent. Nu exit 1 met een actiegerichte instructie, consistent met de fail-fast-policy uit PR fix(sandbox): pin pip deps by hash + vereis project-dir arg #38 (project-dir ontbreekt → exit 2).

Details

Test plan

  • JAVA_HOME=/pad/naar/jdk ./run.sh /pad/naar/maven-project start normaal (geen warning, geen exit 1).
  • Op een host zonder SDKman én zonder JAVA_HOME: script stopt met ERROR: JAVA_HOME is niet gezet … en exit 1.
  • Op een host met werkende SDKman die JAVA_HOME zet: script gaat zonder warning door.
  • Kapotte SDKman-install (bv. sdkman-init.sh aanwezig maar candidate-symlink corrupt): warning verschijnt met expliciete exit-code, en bij ontbrekende JAVA_HOME daarna alsnog exit 1.

🤖 Generated with Claude Code

Twee aanpassingen aan de JVM-detectie in claude-sandbox/host-agents/maven/run.sh
die werden afgesplitst uit de PR #38-review (out-of-scope daar):

1. SDKman-init: exit-status expliciet capturen. Eerder werd `set +euo pipefail`
   actief gelaten over de hele `source ... || echo`-regel, waardoor de meeste
   fouten binnen sdkman-init.sh stil verdwenen en de `|| echo`-fallback
   onbereikbaar was voor partial-init-scenario's. Nu vangen we $? netjes op
   en loggen de exit-code als er iets fout ging.

2. Ontbrekende JAVA_HOME na SDKman-pad: van waarschuwing naar harde exit 1.
   Eerder ging het script vrolijk door zonder JVM en kreeg de gebruiker
   pas verderop in Maven of de agent een onbegrijpelijke fout. Consistent
   met het arg-required-beleid uit PR #38: een ontbrekende randvoorwaarde
   melden we hier, niet pas in een vendored tool.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ericwout-overheid and others added 2 commits May 26, 2026 09:06
Review op de eerste versie van deze PR signaleerde drie zaken:

1. Hard exit op enkel een lege JAVA_HOME was een regressie voor stock
   Debian/Ubuntu/Fedora/Arch/Homebrew, waar `mvn` zonder geëxporteerde
   JAVA_HOME werkt via de Apache-wrapper (resolved `java` op PATH + readlink).
   Check nu beide: alleen exit 1 als JAVA_HOME leeg is én `command -v java`
   niets vindt. Foutmelding dekt nu beide paden ("geen JAVA_HOME gezet en
   geen 'java' op PATH gevonden.").

2. Comment bij de SDKman-init noemde `set +e` waar de code `set +euo pipefail`
   doet en suggereerde dat `set +e` $? swallowed; herformuleerd naar de
   feitelijke reden (status capturen vóór strict-mode-restore).

3. Foutmelding "SDKman heeft geen JVM geactiveerd" klopte niet als SDKman
   helemaal niet geïnstalleerd was. Tekst nu neutraal.

Geverifieerd: JAVA_HOME leeg + geen java op PATH → exit 1; JAVA_HOME leeg +
java op PATH → doorgaan; JAVA_HOME gezet → doorgaan.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mreuvekamp mreuvekamp merged commit 11c014a into main May 26, 2026
9 checks passed
@mreuvekamp mreuvekamp deleted the fix/maven-launcher-fail-fast branch May 26, 2026 12:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants