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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werde ich die Antwort auf meine Frage auf der Grundlage der hilfreiche Hinweis, dass erwähnt wurde von @AndyWilkinson in der Frage der Kommentare, Da wurden alte Feder Gläser (3.2) in
/Library/Java/Extensions/
(es ist MAC OSX Weg ) , habe ich Sie abgenommen. Jetzt java lädtapache Maven
Gläser.