Crates.io | jpre |
lib.rs | jpre |
version | 0.3.0 |
source | src |
created_at | 2020-09-27 10:40:50.092665 |
updated_at | 2024-10-15 09:38:37.567892 |
description | A JDK management tool |
homepage | |
repository | https://github.com/octylFractal/java-preloader-reloadeder |
max_upload_size | |
id | 293371 |
size | 170,709 |
Replacement for my old gist.
Downloads JDKs from foojay DiscoAPI and stores them in <cache dir>/jpre/jdks
.
<cache dir>
is based on
directories
.
Preferred distribution can be set in the config (also directories
-based), defaults to temurin
.
Run cargo install jpre
to get the jpre
binary.
Then, do the following (or similar) in your shell's startup script:
# This may be necessary to ensure the context is understood everywhere
export JPRE_CONTEXT_ID="$(jpre get-context-id)"
# Sets the Java home to the jpre-managed location. This will be symlinked to the currently active JDK.
export JAVA_HOME="$(jpre java-home)"
# Puts the binaries on your path
export PATH="$JAVA_HOME/bin:$PATH"
# Potentially optional, forces shell to re-scan for `java` et. al
hash -r
Note that if you do not set a default JDK (with jpre default
), the symlinked path will lead nowhere!
Run e.g. jpre use 17
, this downloads Temurin JDK 17 and makes it the active JDK.
Other major versions can be downloaded and configured using jpre use <major>
.
The default JDK can be set using jpre default <major>
.
Full details are available by running jpre help
.
jpre
uses the parent process ID as a key to determine the symlink location. This makes it work per-shell (or other
process) and not interfere with other sessions. The symlink is in the jpre
cache directory and is updated every time
a JDK is selected.
In order to prevent cross-session pollution, java-home
clears any existing symlink before creating a new one.