Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Starting throws an exception

I'm trying to build the simplest app in spring and I have the following code for my single controller

    package User;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by Bula on 14/02/14.
 */
@Controller
public class UsersController {

    @RequestMapping("/user")
    public String index()
    {
        return "user_index";
    }

}

Here is the Main.java. The one that boots everything:

  package main;

import javafx.application.Application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;


@ComponentScan
@EnableAutoConfiguration
public class Main {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Also this is the pom.xml

  <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>blog</groupId>
    <artifactId>blog</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>2.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.0.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>1.0.0.BUILD-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
            <version>1.0.0.BUILD-SNAPSHOT</version>
        </dependency>
    </dependencies>


</project>

I have updated the maven hence all the libraries technically should be there. Here is the error that gets thrown(I tried googling it but nothing showed up which came any close to what I faced ):

    Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationAwareOrderComparator.sort(Ljava/util/List;)V
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:371)
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:343)
    at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:221)
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:197)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:877)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:866)
    at main.Main.main(Main.java:14)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Process finished with exit code 1

My user_index.html does exist however I don't think the error is in any kind linked with it since it only has a html tag. Here is an image with all the libraries that I have: enter image description here

like image 894
Bula Avatar asked Feb 14 '14 19:02

Bula


1 Answers

So I created a maven project in Eclipse from your pom. What I've found is that you're getting the org.springframework.core.annotation.AnnotationAwareOrderComparator in two jars. The 2.5.2 spring jar and the 4.0. Get rid of the 2.5.2 jar. That's old. The new jar has the same class with the method that the new code is calling.

The issue, at the heart, is that you're double loading the core jars.

like image 125
Virmundi Avatar answered Oct 13 '22 18:10

Virmundi