Overview
After installing 360Suite on a Unix machine with Tomcat 10.1.x and JDK 21.x, license activation from the Admin Console failed silently. Tomcat logs showed an OSHI initialization error followed by a JNA native library extraction/load failure.
Symptoms
In the Admin Console, entering the license key code results in no visible change (license not applied).
Tomcat logs show:
- Initialize Spring License Manager
- ERROR ... Could not initialize class oshi.software.os.linux.LinuxOperatingSystem
Later logs indicate UnsatisfiedLinkError while loading a JNA temp file under the Tomcat user’s cache (e.g., /home/tomcat10/.cache/JNA/temp/...).
Observations during investigation:
- The Tomcat temp directory exists and is writable by the Tomcat user.
- The lib directory and jar ownership/permissions are correct.
- Behavior consistent with JNA native lib extraction to a path where execution is not allowed (common on mounts with noexec or restrictive security policies on user home/cache paths).
Cause
JNA (used transitively by OSHI) extracts native libraries to a temporary directory and then loads/executes them. On this host, the default temp location used by JNA for the Tomcat user resolved to a path that allowed write but blocked execution (or blocked library loading), causing:
- OSHI static initialization to fail: LinuxOperatingSystem class error.
- License flow to stop early (360Suite license manager initialization requires OS and hardware info).

Important policy note
Several enterprises enforce noexec on certain mounts (e.g., parts of /home, XDG cache paths, or tightened tmp policies). Per internal guidance, we do not recommend changing mount options. Instead, we redirect JNA’s temp directory to a compliant, controlled path.
Resolution
Redirect JNA’s temp directory to an executable, controlled path owned by the Tomcat user, then restart Tomcat and retry license activation.
This can be performed by adding the following option to the Tomcat Java Options (in the setenv.sh configuration file):
- CATALINA_OPTS="$CATALINA_OPTS -Djna.tmpdir=/path/to/jna-tmp"
With "path/to/jna-tmp" to replace with an actual path on the server.
Then restart the Tomcat service, and add the license again.