LiClipse (for Mac) includes its own copy of the JRE
Posted by Jim DeLaHunt on 10 Dec 2017 at 11:17 pm | Tagged as: robobait, software engineering
LiClipse is the developers tool I use for writing Python code. Based on the Eclipse IDE, it accepts numerous plugins to support other programming languages like Java and C, and related tools, such as the Git version control system. Eclipse is mostly Java language code, and it runs on a JRE (Java Runtime Environment). Last month, I wanted to contribute code to a git repository which I accessed via HTTPS. That worked more smoothly if I could put an SSL certificate into the JRE, and I’ll skip the details of why for now.
So I looked up the Java Home of the JRE installed on my Mac OS X laptop (short answer: it’s the path output by running /usr/libexec/java_home). I installed the SSL certificate there. It did not work. That was a sign that LiClipse did not use that JRE. Did it perhaps include its own JRE? After some investigation, I found out the answer: yes!
Here’s the explanation. I hope this helps others.
Within the LiClipse.app bundle directory, there is a subdirectory, ./jre/Contents/Home. You can get to this directory from the shell with a simple cd command, or from the Finder by right-clicking on the LiClipse.app icon and selecting “Show Package Contents” from the pop-up menu. This directory is the Java Home directory for the embedded JRE. Under the Java Home directory is a Java-standard structure, of executable (“bin”), library (“lib”), and other files, which can be used in Java-standard ways.
% cd /Applications/LiClipse\ 4.0.0/LiClipse.app/jre/Contents/Home % ls -F COPYRIGHT            THIRDPARTYLICENSEREADME.txt  man/ LICENSE             Welcome.html            release README              bin/ THIRDPARTYLICENSEREADME-JAVAFX.txt*   lib/
I confirmed that this was LiClipse’s JRE, by performing an operation on this JRE, then running LiClipse and verifying that the operation had effect on LiClipse. (I installed the CA Certificate from a software project’s repository into that JRE’s Key Store, as part of answering the StackOverflow question, How can I add a certificate to LiClipse to permit access to a git repo via SSL?).
LiClipse’s developer, Fabio Zadrozny, confirmed that LiClipse includes a JRE in his answer to a StackOverflow question, Does LiClipse (for Mac) include its own copy of the JRE?, which I posted as I investigated this. (This blog post is based on my answer there, which Fabio later confirmed.) He also notes that by editing the LiClipse configuration file, ./Contents//Eclipse/LiClipse.ini, you can have LiClipse use a different JRE. See instructions on this file’s contents at https://wiki.eclipse.org/Eclipse.ini .
There is no similar ./jre/Contents/Home subdirectory in the official Eclipse build for Mac OS X (confirmed in 64-bit download version 4.7.1).
The Java Platform, Standard Edition Deployment Guide has documentation on Self-Contained Application Packaging, section on “[macOS]-Specific Customization for Basic Packages”. It gives examples of creating a bundle using javapackager or an Ant task <fx:deploy>...<fx:bundleArgument>.... I have no evidence that this is how LiClipse actually does it.