java.lang.NoSuchMethodError GeneXus)

Я использую GeneXus Evolution 2 для своего проекта. Во время разработки появились ошибки, показанные на следующем изображении. Я не знаю, что это такое и как я решаю эту ошибку. Я сейчас без понятия. Дашь ли ты мне какой-нибудь совет? Большое спасибо.

HTTPステータス 500 -java.lang.NoSuchMethodError:com.genexus.ModelContext.server2webcli(Ljava/util/Date;)Ljava/util/Date;


person Nyi Ma Lay Win Lae Aye    schedule 17.09.2014    source источник


Ответы (4)


NoSuchMethodError обычно указывает, что метод (объявление) был там, когда вы компилировали код, но реализация отсутствует, когда вы его запускаете. В большинстве случаев причиной этого является то, что у вас была одна версия JAR-файла соответствующей библиотеки в вашем пути к классам при компиляции и другая, несовместимая, при запуске.

Более подробный ответ потребует более подробного вопроса... ;-)

person Stefan Walter    schedule 17.09.2014

Предположим, вы используете Tomcat в качестве контейнера сервлетов, посмотрите на {Tomcat_Home}/webapps/MyApp/WEB-INF/lib, где MyApp — это имя вашего приложения. Там будет файл gxclassR.jar, который должен соответствовать версии вашей установки Genexus. Чтобы проверить, есть ли у вас правильный:

  1. Убедитесь, что в той же папке нет другой похожей библиотеки, например gxclassD.jar. Если есть, удалите его.
  2. Перейдите в целевую папку среды, в которой вы работаете (из меню Genexus DE «Инструменты -> Исследуйте каталог целевой среды») и найдите файл gxclassR.zip. Скопируйте в файл WEB-INF/lib folder, переименуйте его в gxclassR.jar, заменив фактический файл gxclassR.zip.
  3. Перезапустите приложение tomcat, чтобы убедиться, что используется новый gxclassR.jar.

Если ваш объект продолжает давать сбои, проблема может заключаться в .class, связанном с вашим объектом Genexus. Возможно, он неправильно сгенерирован/скомпилирован. Итак, чтобы исправить это:

  1. Принудительно построить объект Genexus. Для этого попробуйте параметр Build with this only, связанный с объектом. Активируйте параметр Force для этого действия, выбрав «Инструменты -> Параметры -> Сборка -> Сборка только с этим».
  2. После принудительной сборки снова перейдите в целевую папку среды и найдите .class файлов, связанных с объектом. Обычно имя файла/файлов совпадает с именем объекта. Посмотрите дату модификации и подтвердите, что это недавно.
  3. Скопируйте эти .class файлы в папку WEB-INF\classes внутри папки вашего веб-приложения.

Я думаю, что этой информации достаточно, чтобы решить вашу проблему. Если нет, опишите вашу ошибку немного подробнее.

person guindous    schedule 03.10.2014

Проверьте дату и размер файла "gxclassR.zip", который находится в вашей веб-папке внутри вашей базы знаний (Инструменты --> Исследовать каталог целевой среды), и сравните его с файлом, используемым вашим веб-приложением (папка WEB-INF/ библиотека). Если они не совпадают, замените тот, что в вашем веб-приложении, на тот, что в вашей базе знаний. Если вы не уверены в этом и предпочитаете, чтобы с этим справился GX, удалите все файлы .ver в своей веб-папке и принудительно выполните сборку. Это должно синхронизировать все файлы с правильной версией.

person Gustavo Moreira    schedule 23.01.2015

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

person JuanManf    schedule 28.07.2017