IllegalAccessError Ausnahme beim ausführen einer einfachen Spring-Boot-Anwendung

Habe ich nach dem offiziellen spring-boot-guide:

http://projects.spring.io/spring-boot

Meine Maschine Info:

Apache Maven 3.1.0 
Maven home: /Users/abshammeri/apps/apache-maven-3.1.0
Java version: 1.7.0_11, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.5", arch: "x86_64", family: "mac"

POM.xml

<groupId>org.test</groupId>
<artifactId>example</artifactId>
<version>0.1.0</version>


<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.6.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

<properties>
    <start-class>hello.Application</start-class>
</properties>

<build>
    <plugins>
        <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
    </configuration>

        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Und den Code:

package hello;

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
@EnableAutoConfiguration
public class SampleController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

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

aber ich bekomme die folgende Ausnahme jedes mal, wenn ich versuche mvn package && java -jar example.jar mit apache maven 3 und java 1.7 ,

java.lang.reflect.InvocationTargetException
    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:601)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalAccessError: tried to access method org.springframework.core.io.support.SpringFactoriesLoader.loadFactoryNames(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/List; from class org.springframework.boot.SpringApplication
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:367)
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:358)
    at org.springframework.boot.SpringApplication.initialize(SpringApplication.java:228)
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:204)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:952)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:941)
    at hello.Application.main(Application.java:17)

Dank,

  • Ich kann nicht sagen, warum aus Ihrer pom, aber es sieht aus wie Sie haben eine alte version von spring-core auf den classpath, wo loadFactoryNames ist privat. Was ist in der lib-Verzeichnis der jar-Datei, die Sie ausführen?
  • Danke @AndyWilkinson du hast Recht, es waren alte Feder jar-Dateien in dem extension Ordner von java ( in meinem Fall /Library/Java/Extensions/ ) , habe ich Sie abgenommen und alles ist in Ordnung nun, ich ' ll fügen Sie diese als Antwort.
  • das gleiche gilt für mich mit org.glassfish.jersey.ext:jersey-spring3:2.22.2, thx a lot
InformationsquelleAutor Abdullah | 2014-09-20
Schreibe einen Kommentar