Running Java applications with Notes on macOS
My main work computer is a MacBook running macOS. Thank to Logitech, they keyboard is just fine. As you know macOS neither features Domino Designer or Domino Admin. For recent development I wanted to make sure that my applications can run on the client (I've done that before).
Java, Java on the wall, what's the right path of them all?
(Sorry Schneewitchen)
In Notes/Domino R9.0.1FP8 - (client FP10) the Java runtime was updated to Java8 and in R11 changed to AdoptOpenJDK.
On macOS that led to a particular situation. The jvm packaged with the HCL Notes.app
can be found in the pathHCL Notes.app/jre/Contents/Home
with bin
, lib
and lib/ext
as we can expect from a JVM. Suspiciously absent are Notes.jar
, websvc.jar
and njempcl.jar
. They can be located at HCL Notes.app/Contents/MacOS.jvm/lib/ext
.
While this isn't an issue for the Notes client, it is an obstacle when you try to run an external jar file. java -jar somejar.jar
ignores any classpath setting outside the JVM and only loads resources from the default JBM path (lib/ext).
I suspect the separation was neccesary due to the AdoptOpenJDK distribution rules.
To solve this, we can use a start script that creates a symbolic link in the right place. Takeing the usual suspects like DYLD_LIBRARY_PATH
and LD_LIBRARY_PATH
into account we end with a script like this:
#!/bin/bash
# MacOS Keep Starter file
# Keep locations - update as needed - leave the TLS stuff empty if you don't have it
export KEEPJAR=$HOME/keep/projectkeep.jar
export LOG_DIR=$HOME/keep/logs
export TLSFile=$HOME/keep/private/demoserver.projectkeep.io.pfx
export TLSPassword=supersecret
# Don't change anything below unless you are sure what you are doing
# Java files places unfortunately troublesome, so we link some
cd /Applications/HCL\ Notes.app/jre/Contents/Home/lib/ext
export SRCDIR="../../../../../Contents/MacOS/jvm/lib/ext"
if [ ! -f njempcl.jar ]; then
ln -s $SRCDIR/njempcl.jar .
echo "Linked njempcl.jar"
fi
if [ ! -f Notes.jar ]; then
ln -s $SRCDIR/Notes.jar .
echo "Linked Notes.jar"
fi
if [ ! -f websvc.jar ]; then
ln -s $SRCDIR/websvc.jar .
echo "Linked websvc.jar"
fi
# Local Keep Server
export DEBUG=true
export PATH=/Applications/HCL\ Notes.app/Contents/MacOS:$PATH
export JAVA_HOME=/Applications/HCL\ Notes.app/jre/Contents/Home
export GodMode=true
export DYLD_LIBRARY_PATH=/Applications/HCL\ Notes.app/Contents/MacOS
export LD_LIBRARY_PATH=/Applications/HCL\ Notes.app/Contents/MacOS
echo $LD_LIBRARY_PATH ..
cd $HOME/Library/Application\ Support/HCL\ Notes\ Data
/Applications/HCL\ Notes.app/jre/Contents/Home/bin/java -jar $KEEPJAR
cd ~
echo Done!
This script presumes thay we have admin permissions. We could contemplate to check for existing symbolic links and remove the ones we did set. I decided, that smells too much like YAGNI.
As usual: YMMV
Posted by Stephan H Wissel on 17 March 2020 | Comments (1) | categories: HCL Notes Java macOS