ArtiSynth requires that you have a full Java development kit (JDK) installed, which comes with a Java compiler; a simple run time environment (JRE) will not be sufficient. By default, ArtiSynth is compiled to be compliant with Java 8. While ArtiSynth will generally work under later Java versions, there have been occasional reports of compatibility issues involving the Java OpenGL (JOGL) interface. Therefore we currently recommend using Java 8; this also provides maximum compatibility with MATLAB, as indicated above. We specifically recommend the Java SE Development Kit 8uXXX (where XXX is the latest revision number), which can be obtained from Oracle (registration required). At the time of this writing, the download page is located at
and the latest release is 8u281. This page provides downloads for all systems; be sure to choose the download link appropriate to yours. For MacOS, this will be jdk-8u281-macosx-x64.dmg.
If the above Oracle link is no longer current, the search terms ``java 8 jdk download'' should get you to the right place.
After the JDK has been installed, it is important to ensure that it is visible to your system and that it supersedes any other Java installations. One test for this is to open a terminal window and run the command
> javac -version
The output should match the version of the installed JDK. If it does not, or if the command javac is not found, then you can set the “default” JDK by setting the JAVA_HOME environment variable. This can be done inside the initialization file for whichever command line shell you are using.
Assume that the desired JDK has version number 1.8.0_281 and that your home directory is <HOMEDIR>. Then for the bash shell, one can use a plain text editor to edit <HOMEDIR>/.bashrc and insert a line of the form
export JAVA_HOME=‘/usr/libexec/java_home -v 1.8.0_281‘
while for the csh or tcsh shells, one can edit <HOMEDIR>/.cshrc and insert a line of the form
setenv JAVA_HOME ‘/usr/libexec/java_home -v 1.8.0_281‘
Setting JAVA_HOME can also be done directly within the shell; doing it within the initialization file simply avoids the need to do so each time a new terminal window is opened.