NoSuchMethodError при вызове getDeclaredAnnotation () - PullRequest
2 голосов
/ 05 мая 2019

У меня запущено приложение, в котором после нажатия на ссылку таблицы 'Edit' в журнале появляется сообщение об ошибке NoSuchMethodError, и элемент управления остается на текущей странице,не переходит на страницу редактирования.

При получении ошибки был обнаружен фрагмент кода ниже;

Field[] fields = entityObj.getClass().getDeclaredFields(); 
    for(int i=0;i<fields.length;i++){
        Field field =fields[i];         
        field.setAccessible(true);  
        if(field.getDeclaredAnnotation(EmbeddedId.class)!=null){
            return true;
        }
    }
    return false;

В приведенном выше коде в строке if(field.getDeclaredAnnotation(EmbeddedId.class)!=null) я получаюконкретная ошибка.

Также упоминается журнал, как показано ниже;

Caused by: java.lang.NoSuchMethodError: java.lang.reflect.Field.getDeclaredAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
    at com.sprint.neo.querymodel.common.QueryObjectUtil.checkEnitityIsHasEmbeddedId(QueryObjectUtil.java:131)
    at com.sprint.neo.querymodel.common.EntityManager.getEntityObject(EntityManager.java:89)
    at com.sprint.neo.querymodel.common.EntityManager.loadEntityObject(EntityManager.java:72)
    at com.sprint.neo.querymodel.common.EntityManager.entityload(EntityManager.java:60)
    at com.sprint.neo.querymodel.common.EntityManager.loadAndGetEntityObject(EntityManager.java:56)
    at com.sprint.neo.querymodel.common.QueryObjectUtil.getListOfEntityObject(QueryObjectUtil.java:718)
    at com.sprint.neo.querymodel.common.QueryObjectCache.excuteUpdate(QueryObjectCache.java:251)
    at com.sprint.neo.querymodel.common.QueryObjectRow.excuteUpdate(QueryObjectRow.java:298)
    at com.sprint.neo.engine.controller.actions.TaskViewEditAction.edit(TaskViewEditAction.java:83)

Элемент управления должен перейти на страницу edit jsp , поскольку все jsp реализованы правильно.Что я сомневаюсь в ошибке из журнала, так это то, что, если какой-либо файл jar отсутствует относительно API Reflection.Пожалуйста, предложите мне решение для преодоления этой проблемы.Любой ценный совет будет полезен.Большое спасибо.

1 Ответ

1 голос
/ 05 мая 2019

Вы используете метод Field.getDeclaredAnnotation(Class).Этот метод был представлен в Java 8. Он не доступен в Java 7 и более ранних версиях.Вам необходимо обновить JDK.

Field является подклассом AccessibleObject и наследует метод от этого класса.См. Javadoc : там написано «С: 1.8», что является версией для Java 8 во внутренней схеме нумерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...