IncompatibleClassChangeError
происходит, когда некоторый класс X
был скомпилирован с одной версией другого класса Y
, и затем делается попытка загрузить его с другой (несовместимой) версией класса Y
, Если вы получаете эту ошибку, а не подтип, это, вероятно, означает, что Y
изменился с interface
на class
или наоборот, или что произошли изменения в его унаследованных интерфейсах и реализованных классах.
Причина, по которой вы не видите вывод getMessage()
, заключается в том, что IncompatibleClassChangeError
является подтипом lava.lang.Error
, а не java.lang.Exception
. Поэтому catch
для Exception
не ловит его. Простое копирование строки println(e.getMessage())
в следующий блок catch должно исправить это.
Когда вы печатаете сообщение об исключении, оно должно рассказать вам больше о том, что является причиной проблемы. Но основная причина в том, что вам нужно перекомпилировать и / или убедиться, что вы используете одни и те же файлы JAR библиотеки во время компиляции и во время выполнения.