Matt Westlake
Matt Westlake

Reputation: 3651

check for JRE on system

I have an existing Java program that I am giving to some.... not so technically inclined clients of mine. They use a combination of Linux, Windows, and very few have apple machines, which is why I chose Java to develop the program in. The problem is they keep calling me with errors when they try to launch the program because they do not have a JRE installed. Is there any way to:

  1. Import a lib that will give me some kind of command to check.
  2. Add something to the program that will check for the JRE. or (and I really don't want to go about this because of the reason I chose java in the first place)
  3. Write something in C++ that will check for the JRE.

My aim:

  1. Check if JRE installed on machine
  2. If yes: Launch program
  3. If no: pop up a message saying "No Java Environment found, downloading from Java website". Then I would take them directly to the link where they hit "run" and it installs.

// i would do something like

if (JRE.exists()) // maybe use a pathname that would only show up if a JRE is installed
{
    // launch program
}
else
{
    // launch Java installer
}
system.exit(0);

I understand this would be really hard in java (as you cannot run Java programs without a JRE) but I prefer to keep this universal if at all possible.

If there is no easy fix, I'll just make a read-me file that has the link to the java website that checks for a JRE on your system, but the least amount of work the user has to do the better.

Upvotes: 2

Views: 1178

Answers (5)

Alexey Ivanov
Alexey Ivanov

Reputation: 11868

If you can't go with Java Web Start, although I'd recommend using it, you can write simple scripts to detect Java.

For Windows (.bat):

if not "%JAVA_HOME%" == "" (
    "%JAVA_HOME%\bin\javaw.exe" -jar YourApp.jar
) else (
    start http://java.com/download/
)

If JAVA_HOME environment variable is defined, then javaw.exe will be started with your application jar file. The javaw.exe executable uses window subsystem thus it runs without console window.

If JAVA_HOME is not set, it will open the Java download page in the default browser.

For more options, you can use JScript; with it you can display a warning to users that Java is not installed and then open the browser for download.

For Linux (.sh):

if [ "$JAVA_HOME" != "" ]; then
    $JAVA_HOME/bin/java -jar YourApp.jar &
else
    echo JAVA_HOME is not set: Java Runtime Environment (JRE)
    echo is not installed your system.
    echo Either install it from http://java.com/download/
    echo or set JAVA_HOME environment variable.
fi

Upvotes: 1

Andrew Thompson
Andrew Thompson

Reputation: 168835

check for JRE on system

Use deployJava.js as mentioned in the Java Web Start info. page.

..designed to ensure a suitable minimum version of Java is installed before providing a link to a JWS app. or launching an applet.

If it is a rich client desktop app. (e.g. applet or frame), deploy it using Java Web Start.

Upvotes: 1

MoveFast
MoveFast

Reputation: 3025

if the JRE is installed on a system, then JAVA_HOME environment variable is set on both Windows and Linux and it contains the path of JRE. You can check if this variable is set and accordingly proceed.

Upvotes: 0

Dan D.
Dan D.

Reputation: 32391

I would suggest you use an Java installer like IzPack or other such free tools. Using one of these you can create an installer and also generate a native launcher. This can be configured such as it searches for Java and if not found, it can help the user installing it.

There are developers that also use JSmooth or Launch4J for native launchers.

Upvotes: 1

Andrea Sindico
Andrea Sindico

Reputation: 7440

why don't you just create batch and bash files doing that and ask your customer to run one or the other dependently on the OS

Upvotes: 0

Related Questions