spring-security-oauth2
をpom.xmlに追加した後:
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
私は取得し始めました
Exception in thread "main" Java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : org.springframework.boot.context.logging.ClasspathLoggingApplicationListener
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.Java:439)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.Java:418)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.Java:409)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.Java:268)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.Java:247)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:1245)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:1233)
@SpringBootApplication
を実行した後。私はSpring Boot 2.0.0.M5を使用していることに注意してください、これは問題の根源であると思われます(w.r.t.バージョン)。
これは私が使用している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>
<parent>
<artifactId>server</artifactId>
<groupId>mahlzeit</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>api</artifactId>
<properties>
<spring.boot.version>2.0.0.M5</spring.boot.version>
</properties>
<dependencies>
<!-- Spring Framework Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
<!-- Spring Framework -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-jwt</artifactId>
<version>1.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1208-jdbc42-atlassian-hosted</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<!-- Required since this is currently using Spring RC version -->
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
私はこれが競合するバージョンに関係しているのではないかと疑っています-stackoverflowのほとんどの答えはまさにそれであることが判明しました-しかし、私がここで抱えている実際の問題を解明することはできません。
リリースノート Spring Boot 2.0.0.M5状態の場合:
OAuth 2.0サポート
Spring Security OAuthプロジェクトの機能は、コアSpring Securityに移行されています。 OAuth 2.0クライアントサポートは既に追加されており、追加機能はやがて移行されます。
Spring Security OAuth機能に依存しており、まだ移行されていない場合は、org.springframework.security.oauth:spring-security-oauth2
を追加して手動で設定する必要があります。 OAuth 2.0クライアントサポートのみが必要な場合は、Spring Boot 2.0が提供する自動構成を使用できます。また、アップグレードパスが提供されるまで古いアプリケーションが引き続き使用できるように、Spring Boot 1.5のサポートも継続しています。
例のPOMの問題を修正すると、失敗の完全なスタックトレースを確認できます。
Exception in thread "main" Java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationListener : org.springframework.boot.context.logging.ClasspathLoggingApplicationListener
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.Java:439)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.Java:418)
at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.Java:409)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.Java:268)
at org.springframework.boot.SpringApplication.<init>(SpringApplication.Java:247)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:1245)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:1233)
at mahlzeit.api.Application.main(Application.Java:14)
Caused by: Java.lang.NoClassDefFoundError: org/springframework/context/event/GenericApplicationListener
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(ClassLoader.Java:763)
at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:142)
at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:467)
at Java.net.URLClassLoader.access$100(URLClassLoader.Java:73)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:368)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:362)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:361)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:424)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:331)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:357)
at org.springframework.util.ClassUtils.forName(ClassUtils.Java:255)
at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.Java:431)
... 7 more
Caused by: Java.lang.ClassNotFoundException: org.springframework.context.event.GenericApplicationListener
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:381)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:424)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:331)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:357)
... 21 more
この問題の根本的な原因は、org.springframework.context.event.GenericApplicationListener
がクラスパス上にないことです。このクラスはspring-context
モジュールの一部であり、Spring Framework 4.2で新しく追加されました。
Pomを見ると、Bootの依存関係管理を使用していません(spring-boot-dependencies
bomをインポートするか、プロジェクトの親としてspring-boot-starter-parent
を使用します。これは、推移的な依存関係のバージョンがプロジェクトがspring-context
を介してspring-security-oauth2
の4.0.9.RELEASEを推移的に使用しているため、ここで問題が発生しています。
Spring Bootの依存関係管理を使用することを強くお勧めします。何らかの理由でそれを実行したくない、または実行できない場合は、すべての推移的な依存関係がサポートされているバージョンであることを手動で確認する必要があります。
次の構成を使用してみて、問題が解決することを願ってください。
<?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>YOUR GROUP ID</groupId>
<artifactId>ART ID</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>YOUR PROJECT NAME</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<Java.version>1.8</Java.version>
</properties>
....
[YOUR REST OF CONFIGURATIONS]
....
</project>
幸運を !サラム