#java #jni #active #host #locate #executable

bin+lib java-locator

Locates a Java installation in the host

7 releases

0.1.7 May 29, 2024
0.1.6 May 29, 2024
0.1.5 Jun 19, 2023
0.1.3 Dec 8, 2022
0.1.0 Feb 21, 2019

#2 in #jni

Download history 17605/week @ 2024-02-27 18265/week @ 2024-03-05 18819/week @ 2024-03-12 15469/week @ 2024-03-19 15494/week @ 2024-03-26 14469/week @ 2024-04-02 16243/week @ 2024-04-09 18355/week @ 2024-04-16 19732/week @ 2024-04-23 18327/week @ 2024-04-30 19460/week @ 2024-05-07 19065/week @ 2024-05-14 19742/week @ 2024-05-21 19964/week @ 2024-05-28 24727/week @ 2024-06-04 19960/week @ 2024-06-11

87,181 downloads per month
Used in 32 crates (9 directly)

MIT/Apache

15KB
224 lines

java-locator

crates.io Build

This is a small utility written in Rust.

It locates the active Java installation in the host.

Usage

The utility can be used as a library, or as an executable:

Library

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(())
}

Executable

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

License

At your option, under:

Dependencies

~0–0.9MB
~15K SLoC