by
Ray Rosales
When an ITCAM agent is started up, you might encounter the following Java error-
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.J9VMInternals.initialize(J9VMInternals.java:259)
at java.nio.file.FileSystems.getDefault(FileSystems.java:187)
at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:495)
at sun.util.calendar.ZoneInfoFile$1.run(ZoneInfoFile.java:490)
at java.security.AccessController.doPrivileged(AccessController.
java:274)
The ITM install team has determined that most like cause of this issue is the following Java bug:
https://bugs.openjdk.java.net/browse/JDK-7181721
which is closed as a duplicate of:
https://bugs.openjdk.java.net/browse/JDK-7050570
JDK-705070 appears to indicate that the fix was made available in some
level of Java 8. It is not clear exactly which level.
ITM uses JRE7 as the "CANDLEHOME JRE". There is no plan to update the CANDLEHOME JRE to version 8.
It was determined that the file system where /opt/IBM/ITM is mounted, when unmounted, had permissions of 700. The solution was to unmount the
filesystem, fix the permissions, then remount the file system with commands something like the following:
ls -ld /opt/IBM/ITM
umount /opt/IBM/ITM
ls -ld /opt/IBM/ITM
chmod 755 /opt/IBM/ITM
ls -ld /opt/IBM/ITM
mount /opt/IBM/ITM
ls -ld /opt/IBM/ITM
There is a A TEMPORARY work-around but it is not recommended for a production environment or a permanent solution. You can however try it to determine if the Java bug is the reason for the Java Error during agent startup. The above solution would be the recommended method for resolving the issue:
Modify /opt/IBM/ITM/bin/CandleAgent, and insert this line right before the ITM Java code ($print $JREEXE -classpath ...) gets called:
cd $HOME
So, the last lines of CandleAgent will become:
if [[ -f ${CANDLEHOME}/bin/.agent.${product} ]];
then
${CANDLEHOME}/bin/.agent.${product} -ch $CANDLEHOME $BATCHOPT
$LOGOPT $NOPIDCHECKOPT $CONFIGOPT $MULTIOPT $FORCEOPT $oParms $pParms
-a $cArch $action $product
else
cd $HOME
$print $JREEXE -classpath $CLASSPATH $SAFE_MODE
-DGlobalDbgLevel="$TRACE_LEVEL"
-DInstallRASConfig="$CANDLEHOME/config/ITMConfigRAS.properties"
ITMinstall.CandleAgent -ch $CANDLEHOME $BATCHOPT $
LOGOPT $NOPIDCHECKOPT $CONFIGOPT $MULTIOPT $FORCEOPT $oParms $pParms -a
$cArch $action $product
fi
fi
This will make sure the ITM Java code is not launched in /opt/IBM/ITM, which was causing this problem, due to insufficient permissions. And it will force the ITM Java code to be launched in $HOME. Again this is only a test fix.
#how-to#troubleshoot#ITCAM#Java