Socket
Socket
Sign inDemoInstall

locate-java-home

Package Overview
Dependencies
3
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    locate-java-home

Locates JAVA_HOME on any platform, and can differentiate between different versions.


Version published
Weekly downloads
24
increased by71.43%
Maintainers
1
Install size
2.05 MB
Created
Weekly downloads
 

Readme

Source

locate-java-home v1.1.2

Locates JAVA_HOME on any platform, and can differentiate between different versions.

Build Status Build status

Usage

npm install locate-java-home
import LocateJavaHome from 'locate-java-home'; // or var ImportJavaHome = require('locate-java-home').default;
LocateJavaHome(function(error, javaHomes) {
   javaHomes.forEach(function(homeInfo) {
      console.log("Found Java " + homeInfo.version + " at " + homeInfo.path);
      if (homeInfo.isJDK) {
        console.log("It's a JDK!");
      }
   });
});

// Limit to JDKs for Java 6 and above.
LocateJavaHome({
    // Uses semver :) Note that Java 6 = Java 1.6, Java 8 = Java 1.8, etc.
    version: ">=1.6",
    mustBeJDK: true
}, function(error, javaHomes) {
    // Done.
});

Motivation

I originally wrote this utility for DoppioJVM, which requires access to the Java 8 JDK during build time.

I required the following:

  • The ability to check the version of java in JAVA_HOME.
  • Verify that JAVA_HOME is a JDK and not a JRE.
  • Detect a Java 8 JDK even if it is not the default version of Java installed.
  • Have the above work across Windows, Mac, and Linux.

Since this functionality is likely generally useful, I have decided to release this as a standalone library! Enjoy! :)

API

The locate-java-home package is a single async function that takes an optional options argument:

LocateJavaHome(options, function(error, javaHomes) {});
LocateJavaHome(function(error, javaHomes) {});

javaHomes is an array of objects that contain information about each JAVA_HOME we found:

{
  // Absolute path to JAVA_HOME
  path: string;
  // Version of Java in the JAVA_HOME.
  version: string;
  // Security number of this version of Java.
  // Typically, you want a version with the largest security number.
  // Note: For Java 9 and later, this will always be '0' as this is now
  // encoded into the version number. See http://openjdk.java.net/jeps/223
  // and https://blogs.oracle.com/java-platform-group/a-new-jdk-9-version-string-scheme
  security: number;
  // True if this JAVA_HOME is a JDK, false if it is a JRE.
  isJDK: boolean;
  // Is this version of Java 64-bit?
  is64Bit: boolean;
  // Paths to various executables.
  executables: {
    java: string;
    // JDK only:
    javac: string;
    javap: string;
  }
}

Options

locate-java-home surfaces a number of useful options:

{
  // Semantic versioning string (e.g. ~1.6, >1.6....)
  version: string;
  // Are you specifically looking for a JDK over a JRE?
  mustBeJDK: boolean;
  // Are you specifically looking for a JRE over a JDK?
  mustBeJRE: boolean;
  // Are you specifically looking for a 64-bit JAVA_HOME?
  mustBe64Bit: boolean;
  // Do you want locate-java-home to exit fatally if one of the found JAVA_HOME
  // locations does not function appropriately? (Mainly useful for debugging.)
  paranoid: boolean;
}

Global Script

If you install locate-java-home globally, you'll have access to the locate-java-home command line tool. Currently, it lists all of the JAVA_HOME locations on your system. If there's any desire to expand it into a full-fledged command line tool that exposes the options of this library, let me know!

FAQs

Last updated on 22 Aug 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc