Java.lang.NoSuchMethodError: org.springframework.beans.support.ResourceEditorRegistrar. <init> (Lorg / springframework / core / io / ResourceLoader;)

Обновлено: главный ответ на вопрос Этот говорит о различных средах компиляции и производства. Второй ответ - исправить это в Eclipse. Я запускаю этот код в IntelliJ, и у меня нет разных сред для компиляции и производства. Я просто нажимаю кнопку «Выполнить» в IntelliJ. Также вопрос нигде не дублирует то, что там задают.

Я пытаюсь создать простую программу Spring. Это структура папок:

.
├── firstSpringProject.iml
├── pom.xml
├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── webograffiti
│       │           ├── MainClass.java
│       │           └── Student.java
│       └── resources
│           └── applicationContext.xml

Вот код, записанный в этих файлах:

Student.java

package com.webograffiti;

public class Student {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void displayInfo(){
        System.out.println("Hello "+name);
    }
}

MainClass.java

package com.webograffiti;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainClass {
    public static void main(String [] args){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Student obj = (Student) context.getBean("student");
        obj.displayInfo();
    }
}

applicationContext.xml

<?xml version = "1.0" encoding = "UTF-8"?>

    <beans xmlns = "http://www.springframework.org/schema/beans"
       xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation = "http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id = "student" class = "com.webograffiti.Student">
        <property name = "name" value = "Piyush"/>
    </bean>

</beans>

Пытаюсь запустить MainClass.main(). Но получаю это исключение:

Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.beans.support.ResourceEditorRegistrar.<init>(Lorg/springframework/core/io/ResourceLoader;)V
    at org.springframework.context.support.AbstractApplicationContext.prepareBeanFactory(AbstractApplicationContext.java:446)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:355)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at com.webograffiti.MainClass.main(MainClass.java:8)

У меня есть все зависимости, необходимые для запуска этого кода, а именно. spring-core, spring-beans, spring-osgi-core. Это может быть ошибка пути к классам, но я не могу найти решение.

java.lang.NoSuchMethodError указывает на несовместимые версии файлов jar.
Jens 25.05.2018 07:33

Это в 99% случаев из-за разных версий библиотек между средами сборки и развертывания (и здесь часто спрашивают). Пожалуйста, дважды проверьте, что у вас одинаковые библиотеки в обоих местах.

Jim Garrison 25.05.2018 07:33

@JimGarrison У меня нет отдельных сред, и я использую его в IntelliJ. Вы можете помочь мне это исправить? Я не могу найти решения по вопросу, который, по вашему мнению, является дубликатом.

Piyush Shrivastava 25.05.2018 07:41

Вы развертываете на встроенном сервере в IntelliJ? если да, проверьте конфигурацию сервера и путь к классам. В противном случае вам, вероятно, следует выполнить полностью чистую перестройку всего проекта, чтобы обновить все файлы .class.

Jim Garrison 25.05.2018 07:44

@JimGarrison, В файле MainClass есть main (). Сгенерированный файл Jar работает в моей локальной системе. Он не запущен на сервере. Также сделал mvn clean install, проблема все еще сохраняется.

Piyush Shrivastava 25.05.2018 07:46

Возможно, пришло время переустановить IntelliJ. Единственный способ возникновения этой ошибки - это компиляция с зависимостью, которая имеет этот конкретный конструктор ResourceEditorRegistrar(org.springframework.core.io.Resource‌​Loader loader), но когда IntelliJ попытался выполнить код, он успешно загрузил класс ResourceEditorRegistrar, но не смог найти этот конкретный конструктор. Возможно ли, что в вашем пути к классам есть две разные версии ОДНОЙ библиотеки?

Jim Garrison 25.05.2018 07:51

@JimGarrison, пожалуйста, снова откройте этот вопрос, чтобы тот, кто действительно имеет представление о том, что происходит, мог ответить.

Piyush Shrivastava 25.05.2018 07:52

Я сделаю это, но нет никаких гарантий, что кто-то другой не закроет его снова.

Jim Garrison 25.05.2018 07:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
587
0

Другие вопросы по теме