| Crates.io | java-locator |
| lib.rs | java-locator |
| version | 0.1.9 |
| created_at | 2019-02-21 08:30:11.966929+00 |
| updated_at | 2025-01-31 08:13:37.766914+00 |
| description | Locates a Java installation in the host. |
| homepage | |
| repository | https://github.com/astonbitecode/java-locator |
| max_upload_size | |
| id | 116163 |
| size | 33,999 |
This is a small utility written in Rust.
It locates the active Java installation in the host.
The utility can be used as a library, or as an executable:
extern crate java_locator;
fn main() -> java_locator::errors::Result<()> {
let java_home = java_locator::locate_java_home()?;
let dyn_lib_path = java_locator::locate_jvm_dyn_library()?;
let libjsig = java_locator::locate_file("libjsig.so")?;
println!("The java home is {}", java_home);
println!("The jvm dynamic library path is {}", dyn_lib_path);
println!("The file libjsig.so is located in {}", libjsig);
Ok(())
}
Having rust installed, you may install the utility using cargo:
cargo install java-locator --features build-binary
And then, issuing
java-locator
you should have an output like:
/usr/lib/jvm/java-11-openjdk-amd64
You may retrieve the location of the jvm shared library:
java-locator --jvmlib
should give an output like:
/usr/lib/jvm/java-11-openjdk-amd64/lib/server
This may be used in cases when the LD_LIBRARY_PATH (or PATH in windows) should be populated.
You may also retrieve the location of any file inside the Java installation:
java-locator --file libjsig.so
and you can even use wildcards:
java-locator --file libjsig*
The latter two commands should return something like:
/usr/lib/jvm/java-11-openjdk-amd64/lib
build-binary: Generates a java-locator executable
locate-jdk-only: Instructs java-locator to locate only JDKs.
In a system that has only JREs installed, java-locator will not find any Java installation if this feature is enabled.
This feature also solves issues when using JDK 8: In usual installations, the symlinks of the java executable in the $PATH
lead to the jre directory that lies inside the JDK 8. When $JAVA_HOME is not defined in the system, java-locator attempts to locate the
Java installation following the symlinks of the java executable. Having done that, it cannot locate development artifacts like jni.h headers,
javac etc. With this feature enabled though, java-locator will locate development artifacts normally.
At your option, under: