1

注追加した後:https://github.com/silentsnooc/spring-oauth-issue
をあなたはgithubの上で最低限の例のクローンを作成することができます。 Java Applictionとしてmahlzeit.api.service.Applicationを実行してください。は、インターフェイスをインスタンス化することはできませんorg.springframework.context.ApplicationListener春 - セキュリティのOAuth2

私は私のpom.xmlにspring-security-oauth2を追加した後:

<dependency> 
    <groupId>org.springframework.security.oauth</groupId> 
    <artifactId>spring-security-oauth2</artifactId> 
    <version>2.2.0.RELEASE</version> 
</dependency> 

は、私は私の@SpringBootApplicationを実行した後

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) 

を得るために始めました。私は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の上のほとんどの答えはちょうどそれをあることが判明 - しかし、私は私がここに持っています実際の問題を作ることはできません。


春ブーツ2.0.0.M5状態のためrelease notes

OAuth 2.0のサポート春のセキュリティのOAuthプロジェクトから

機能は、コア春のセキュリティに移行されています。 OAuth 2.0クライアントのサポートは既に追加されており、追加機能は予定通りに移行されます。あなたはまだあなたが手動で物事をorg.springframework.security.oauth:spring-security-oauth2を追加し、設定する必要があります移行されていない春のセキュリティのOAuth機能に依存している場合

。 OAuth 2.0クライアントのサポートが必要な場合は、Spring Boot 2.0が提供する自動設定を使用できます。 Springブート1.5をサポートし続けているため、古いアプリケーションでもアップグレードパスが提供されるまで、引き続きその使用が可能です。

+0

あなたの春のブート設定コードはどこですか?それらも置く。 –

+0

あなたの '自動設定 'を意味します。親タグはどこにありますか?完全な 'pom.xml 'を入れてください。 –

+0

あなたのpomにパッケージ情報が見つかりませんでした。私のビルドプラグインはhttps://pastebin.com/Ghcd7tWaのように見えます –

答えて

3

は例のポンポンで問題が修正されたので、私は今、障害の完全なスタックトレースを見ることができます:

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を見ると

、あなたはspring-boot-dependencies BOMをインポートするか、プロジェクトの親としてspring-boot-starter-parentを使用するか(ブートの依存関係の管理を使用していない。これは、任意の推移的依存関係のバージョンが管理されていないことを意味します。それは原因となっていますあなたのプロジェクトが4.09.RELEASEのspring-contextを一時的に使用している場合の問題はspring-security-oauth2

私は、Spring Bootの依存関係管理を強くお勧めします。いくつかの暗黙の理由で、手動ですべての推移的な依存がバージョンをサポートしていることを確認する必要があります。

+0

それはそれをしました!ありがとう - 私はそれを考えなかったでしょう。 – displayname

関連する問題