Skip to content

A utility that locates the active Java installation in the host.

License

Notifications You must be signed in to change notification settings

astonbitecode/java-locator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Available Features

  • 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.

License

At your option, under:

About

A utility that locates the active Java installation in the host.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages