Nested exception is java lang nosuchmethoderror

Как исправить ошибку java.lang.NoSuchMethodError?

ошибка java.lang.NoSuchMethodError

Ошибка java.lang.NoSuchMethodError на Java выдается, когда программа пытается вызвать метод класса, который не существует. Метод может быть статическим или также может быть методом экземпляра.

В большинстве случаев java.lang.NoSuchMethodError перехватывается компилятором, но иногда это может происходить во время выполнения. Если эта ошибка возникает во время выполнения, то единственной причиной может быть изменение структуры класса, которое сделало ее несовместимой.

Давайте разберем подробнее как исправить ошибку, у нас есть два класса Data и Temp, как показано ниже.

public class Data < public void foo() < System.out.println("foo"); >public void bar() < System.out.println("bar"); >>

Давайте запустим их через командную строку. Обратите внимание, что я не использую Eclipse или какую-либо другую IDE, чтобы избежать обнаружения этой ошибки во время компиляции.

pankaj:Downloads pankaj$ javac Data.java
pankaj:Downloads pankaj$ javac Temp.java
pankaj:Downloads pankaj$ java Temp
foo
bar
pankaj:Downloads pankaj$

Итак, программа выполнена, давайте продолжим и изменим определение класса данных, как показано ниже.

public class Data < public void foo() < System.out.println("foo"); >// public void bar() < // System.out.println("bar"); // >>

Обратите внимание, что я удалил метод bar(). Теперь нам нужно будет скомпилировать только класс данных, а не основной класс.

pankaj:Downloads pankaj$ javac Data.java pankaj:Downloads pankaj$ java Temp foo Exception in thread "main" java.lang.NoSuchMethodError: Data.bar()V at Temp.main(Temp.java:7) pankaj:Downloads pankaj$

Мы получили ошибку java.lang.NoSuchMethodError, потому что класс Data стал несовместим с классом Temp. Если бы мы попытались скомпилировать класс Data, мы получили бы ошибку, как показано ниже.

pankaj:Downloads pankaj$ javac Temp.java Temp.java:7: error: cannot find symbol d.bar(); ^ symbol: method bar() location: variable d of type Data 1 error pankaj:Downloads pankaj$

Есть две основные причины:

  • Версия Jar, используемая во время компиляции, отличается от версии среды выполнения. Например, у вас мог бы быть MySQL jar в вашем приложении, имеющим другую версию от того, что присутствует в папке lib Tomcat. Поскольку Tomcat lib folder jars сначала просматривается Java Classloader, тогда возможна эта ошибка, если какой-либо метод не найден в загруженном классе.
  • Конфликт из-за того же имени класса. Например, приложение использует сторонний jar-файл с таким же полным именем класса, как у вас. Поэтому, если classloader загружает класс из другого jar.
Читайте также:  Html in apple pages

Отладка java.lang.NoSuchMethodError

Вы можете использовать java runtime option-verbose:class, чтобы получить информацию о jar, который используется для загрузки класса. Эту конфигурацию можно задать в tomcat catalina.sh или setenv.sh.

JAVA_OPTS=»$JAVA_OPTS -verbose:class»
Затем вы увидите логи, подобные приведенным ниже, которые очень полезны для выяснения фактического jar-файла, используемого при загрузке класса, и причины java.lang.NoSuchMethodError во время выполнения.

[Opened /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk /Contents/Home/jre/lib/rt.jar] [Loaded java.lang.Object from /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk /Contents/Home/jre/lib/rt.jar] [Loaded java.io.Serializable from /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk /Contents/Home/jre/lib/rt.jar] [Loaded com.journaldev.spring.controller.HomeController from file:/Users/pankaj/Downloads/apache-tomcat-8.5.16/webapps/spring-mvc-example/WEB-INF/classes/]

Средняя оценка 2 / 5. Количество голосов: 12

Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.

Видим, что вы не нашли ответ на свой вопрос.

Напишите комментарий, что можно добавить к статье, какой информации не хватает.

Источник

Русские Блоги

Handler processing failed; nested exception is java.lang.NoSuchMethodError:

В последнее время я писал небольшие проекты с открытым исходным кодом, и я сталкивался с большими и маленькими ошибками, даже небольшими ошибками. Большие ошибки (относящиеся к тем, которые требуют много времени для DEBUG), должны вести блог, чтобы записывать их, чтобы избежать таких ошибок в будущем.
Помните, не вводите пакет jar в заблуждение из-за некоторых ошибок!

Снимок экрана с отчетом об ошибке выглядит следующим образом:


Handler processing failed

Ключевое сообщение об ошибке:

message Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.beanutils.MethodUtils.getAccessibleMethod

смысл: Метод не указан, позвольте мне позвонить
Или же, Вы дали мне слишком много вызываемых методов, у меня нет выбора!

Процесс разрешения:

1. См. Отчет об ошибке core.dao.BaseDao.processQuery (BaseDao.java:610). Откройте этот файл java.

2. Увидев org.apache.commons.beanutils.MethodUtils.getAccessibleMethod, мы можем сделать вывод, что существует проблема с пакетом jar org.apache.commons.beanutils! Найдите неправильный файл заголовка в классе java

 java

3. Откройте каталог lib проекта и найдите отсутствующие / повторяющиеся файлы jar.

 lib

4. Удалите один из них, рекомендуется удалить старую версию

Поскольку большинство методов старой и новой версии повторяются, если два пакета существуют одновременно, система не знает, какой метод пакета использовать, поэтому выдается сообщение об ошибке.

Читайте также:  About properties file in java

5. Перекомпилируйте и запустите проект, успешно решено.

Наконец, приложите полную информацию об ошибке:

HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.beanutils.MethodUtils.getAccessibleMethod(Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; type Exception report message Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.beanutils.MethodUtils.getAccessibleMethod(Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; description The server encountered an internal error that prevented it from fulfilling this request. exception org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.beanutils.MethodUtils.getAccessibleMethod(Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1259) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844) javax.servlet.http.HttpServlet.service(HttpServlet.java:618) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) core.web.LoginFilter.doFilter(LoginFilter.java:51) root cause java.lang.NoSuchMethodError: org.apache.commons.beanutils.MethodUtils.getAccessibleMethod(Ljava/lang/Class;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; core.util.BeanUtils.describeAvailableParameter(BeanUtils.java:57) core.dao.BaseDao.processQuery(BaseDao.java:610) core.dao.BaseDao.doPaginationQuery(BaseDao.java:441) core.dao.BaseDao.doPaginationQuery(BaseDao.java:432) core.service.BaseService.doPaginationQuery(BaseService.java:183) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:483) org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) com.sun.proxy.$Proxy101.doPaginationQuery(Unknown Source) com.forestry.controller.sys.TelController.getHouseList(TelController.java:176) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:483) org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844) javax.servlet.http.HttpServlet.service(HttpServlet.java:618) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) core.web.LoginFilter.doFilter(LoginFilter.java:51) note The full stack trace of the root cause is available in the Apache Tomcat/8.0.9 logs. Apache Tomcat/8.0.9 

Источник

Оцените статью