Summary
When running a catalog entry requiring java: 25+, JBang may download a new JDK even if Java 25 is already installed via SDKMAN.
Environment
- OS:
6.19.2-2-cachyos
- SDKMAN installed JDKs:
21-tem (current)
25.0.1-tem
- Command:
jbang --verbose run --fresh demos@tamboui --help
Expected
JBang detects and uses installed SDKMAN Java 25 (~/.sdkman/candidates/java/25.0.1-tem) without downloading.
Patch:

Actual
JBang may attempt JDK installation instead of reusing SDKMAN Java 25.
Repro
- Ensure SDKMAN has Java 25 installed but current Java is 21:
❯ ls -1 ~/.sdkman/candidates/java
sdk use java 21-tem
- Run:
JBANG_DIR=$(mktemp -d) jbang --verbose run --fresh demos@tamboui --help
- Check verbose output for install/download activity.
Root cause (from investigation)
This is in devkitman integration:
- SDKMAN provider not part of
basic provider set.
- SDKMAN folder/ID handling needed to support normal SDKMAN folder names while preserving provider-unique IDs.
Proposed fix
- Include
sdkman in default/basic provider list.
- Accept SDKMAN folder names like
25.0.1-tem.
- Resolve both suffixed/unsuffixed IDs consistently.
- Ignore
current symlink and same-folder duplicates.
- Add tests
Validation
With patched devkitman + jbang:
- Verbose output includes
SdkmanJdkProvider.
- Selected JDK is
25.0.1-tem-sdkman at ~/.sdkman/candidates/java/25.0.1-tem.
- No download/install occurs.
I have a working commit, I am happy to open PRs to devkitman + jbang to patch version and align breaking changes ( 0.3 to 0.4 )
Let me know what you think
Summary
When running a catalog entry requiring
java: 25+, JBang may download a new JDK even if Java 25 is already installed via SDKMAN.Environment
6.19.2-2-cachyos21-tem(current)25.0.1-temjbang --verbose run --fresh demos@tamboui --helpExpected
JBang detects and uses installed SDKMAN Java 25 (
~/.sdkman/candidates/java/25.0.1-tem) without downloading.Patch:

Actual
JBang may attempt JDK installation instead of reusing SDKMAN Java 25.
Repro
❯ ls -1 ~/.sdkman/candidates/javasdk use java 21-temJBANG_DIR=$(mktemp -d) jbang --verbose run --fresh demos@tamboui --helpRoot cause (from investigation)
This is in devkitman integration:
basicprovider set.Proposed fix
sdkmanin default/basic provider list.25.0.1-tem.currentsymlink and same-folder duplicates.Validation
With patched devkitman + jbang:
SdkmanJdkProvider.25.0.1-tem-sdkmanat~/.sdkman/candidates/java/25.0.1-tem.I have a working commit, I am happy to open PRs to devkitman + jbang to patch version and align breaking changes ( 0.3 to 0.4 )
Let me know what you think