Logger throws IncompatibleClassChangeError at runtime when processing a custom log message class

Solution 1:

It turned out that there was Lib C that has a reference to the old implementation of the CustomLogMessage class and this lib C was loaded first by the JVM and therefore when it reached this line LOGGER.info(new CustomLogMessage(args)); during run-time, it threw the exception (binary incompatible).