# Finding the JRE that executes a Java application

Last edited on

## Introduction¶

It is important to configure Squish for Java to use exactly the same JRE (Java Runtime Environment) that your application is using. (You can configure this by running `SQUISH_DIR/bin/squishconfig --java=<JRE_DIR>`.) But sometimes it is not obvious which JRE is being used. (It could be one that is bundled with the application, or one of several JREs installed for the user, or a system-wide one.)

### Finding the used JRE on Windows using ListDLLs¶

The tool ListDLLs can list the DLLs (and their paths) used by a process:

``````C:\Users\myuser>listdlls java.exe

ListDLLs v3.1 - List loaded DLLs
Sysinternals - www.sysinternals.com

------------------------------------------------------------------------------
java.exe pid: 5824
Command line: java  Calculator

Base                Size      Path
0x0000000000400000  0x24000   C:\Windows\SysWOW64\java.exe
...
0x0000000076760000  0xcc000   C:\Windows\syswow64\MSCTF.dll
0x000000007c340000  0x56000   C:\Program Files (x86)\Java\jre6\bin\msvcr71.dll
0x000000006d7f0000  0x2af000  C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll
...
0x000000006d7a0000  0xc000    C:\Program Files (x86)\Java\jre6\bin\verify.dll
0x000000006d320000  0x1f000   C:\Program Files (x86)\Java\jre6\bin\java.dll
0x000000006d7e0000  0xf000    C:\Program Files (x86)\Java\jre6\bin\zip.dll
0x000000006d000000  0x14c000  C:\Program Files (x86)\Java\jre6\bin\awt.dll
...
0x000000006d230000  0x4f000   C:\Program Files (x86)\Java\jre6\bin\fontmanager.dll
...
0x000000006d600000  0x13000   C:\Program Files (x86)\Java\jre6\bin\net.dll
...
0x000000006d620000  0x9000    C:\Program Files (x86)\Java\jre6\bin\nio.dll

C:\Users\myuser>
``````

As you can see the above program uses the 32 bit JRE in `C:\Program Files (x86)\Java\jre6`. So this implies that a 32 bit Squish for Java package must be used and that it must be configured for this JRE.

(In the example above the target process got identified by entering the executable name "java.exe". Make sure to specify the executable name of your own application when using ListDLLs. See "listdlls /?" for further options.)

### Finding the used JRE on Windows using Process Explorer¶

Even though these steps (and the `Process Explorer` application) are Windows specific, similar tools should exist for other platforms:

• Quit any Java application.

• In `Process Explorer` press Control+f or choose `Find``Find Handle or DLL...`:

• Search for the text "jvm" (without the quotes):
• If you can still find processes which use jvm.dll you must quit/kill these processes first and only proceed when `Process Explorer` does not find any processes which use `jvm.dll` anymore.

• Search for the text "jvm" (without the quotes):

You will probably have to resize the "Handle or DLL" column so that you can see the complete path.

A similar approach is to browse the list of DLLs in a process yourself, as explained in Getting a list of DLLs currently loaded in a process .

### How to Find the JRE used by Java applications on Unix (Linux, macOS, etc.)¶

On Unix the general approach is to look at the Java application's open files; these should include a library called `libjvm.so` or similar. This can be done by using the `lsof` command and grepping its results, for example:

Of course, to make this work you need to know the running application's process ID, but you can find that using the `ps` command.

### How to Find the JRE used by Eclipse/RCP based applications¶

To find out which Java Runtime Environment (JRE) is being used by Eclipse or an RCP based application START YOUR APPLICATION WITHOUT SQUISH and click `Help` | `About ...`:

Then click on `Installation Details`:

And then click on the `Configuration` tab:

In this example the lines...

-vm

C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll

...indicate that this Eclipse instance is executed by the JRE in `"C:\Program Files (x86)\Java\jre6"`.

Sometimes these entries are not so easy to spot. In such a case you can select and copy the entire contents of the tab to the clipboard, then paste the text into a text editor and use the editors search or find functionality to locate the "-vm" line.