After installing FDM on my Windows 10 VDI, the FDM UI fails to launch. Right-clicking on the launch icon and clicking on the "run as administrator" option, a prompt comes up and disappears immediately. The prompt looks like for telemetry connection. We have disabled it by setting TDM_Portal_URL as N in the environment variables. But still the FDM UI is not opening.
Operating System - Windows 10 Enterprise
FDM Version - 4.11.58.0
JRE Version - 1.8.0_181
To troubleshoot the issue further, we had to run the FDM executable from a command line to get more information regarding what's happening.
To run FDM from a command line:
Open a command-line prompt
Change directories to C:\Program Files\Grid-Tools\FastDataMasker\jre\bin
Run the following command: java –jar "%CAFDM_HOME%\GTMAPPER.exe" > %TEMP%\fdm.log 2>&1
The UI should try to launch and create a fdm.log file in the %TEMP% directory. Review the %TEMP%\fdm.log for more information
When the system had Java 8 installed, we saw the following error in the fdm.log that was generated by launching the GTMAPPER.exe from the command line:
java.lang.UnsupportedClassVersionError: com/gridtools/products/sdmmapper/Splasher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Error: A JNI error has occurred, please check your installation and try again
This error is telling us that the FDM UI failed to launch because the system tried using an older version of Java, the Java 8 JRE (class 52). The FDM application is compiled for Java class 61 (Java 17). See Java Class Versions for more information.
After uninstalling the Java 8 JRE, the FDM UI still ailed to launch. This time we saw a completely different error:
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ff849933cc6, pid=432, tid=16880
#
# JRE version: OpenJDK Runtime Environment Temurin-17.0.9+9 (17.0.9+9) (build 17.0.9+9)
# Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (17.0.9+9, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
# Problematic frame:
# C [ssojho64.dll+0x13cc6]
This error is telling us that the Java 17 JRE crash when loading the ssojho64.dll, which is associated with the Oracle Enterprise Single Sign-On Suite Plus application. Oracle ESSO is crashing the Java 17 JRE because it's incompatible with this release of Java.
Note: Disabling Oracle ESSO resolved the Java crash, and the FDM UI launches.
If Oracle ESSO is needed, then re-install Java 8. However, we are back to where we started. You can try setting the %CAFDM_HOME%\jre\bin (by default C:\Program Files\Grid-Tools\FastDataMasker\jre\bin) in the System PATH to see if this allows the system to run the FDM UI under the Java 17 JRE. But it's very likely there still could be a conflict, running both the Oracle ESSO and FDM on the same system due to the Java version mismatch. You may find that you cannot run Oracle ESSO and FDM on the same system.
There have been other reports of Oracle ESSO causing Java Exception Access Violations. This might be related to an Oracle defect. See https://support.oracle.com/knowledge/Middleware/2791640_1.html for more information.