Это классический пример того, как классы с одинаковыми именами могут вызывать путаницу и исключения во время выполнения:
MystateObj = (Statement) MyconObj.createStatement();
Импорт, используемый реализацией, не был включен в код OP, однако, на основе выданного исключения:
java.lang.ClassCastException: org.apache.derby.client.am.ClientStatement cannot be cast to java.beans.Statement
Класс Statement
, используемый в приведении, - java.beans.Statement
, который, вероятно, был импортирован. Объект, который был возвращен MyconObj.createStatement()
, имеет тип org.apache.derby.client.am.ClientStatement
, и это вызывает исключение приведения во время выполнения - возвращаемый объект является расширением java.sql.Statement
, как упомянуто в комментариях выше ( Mark Rotteveel ).
Импорт Statement
выполнен правильно, но из неверной библиотеки. Это может легко произойти при использовании IDE, которые разрешают автоматическую генерацию импорта (когда более чем одному классу соответствует имя используемого класса, для возможных импортов отображается раскрывающийся список. Выбор неправильного импорта, к сожалению, является обычным явлением).