2016-10-13 21 views
3

私はフロントエンドとしてHTMLとThymeleafを使用してJava Spring Boot Webアプリケーションを開発しています。私の問題は、自分のプロジェクトを実行しようとすると、ThymeleafConfigクラスにランダムにエラーが発生することです。私は以下でより詳細に説明しますが、最初は私のコードです。Maven依存関係がランダムに認識されない

のpom.xml依存性:

<dependency> 
    <groupId>org.thymeleaf.extras</groupId> 
    <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
</dependency> 

ThymeleafConfigクラス:

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect; 

@Configuration 
public class ThymeleafConfig { 

    @Bean 
    public SpringSecurityDialect springSecurityDialect() { 
     return new SpringSecurityDialect(); 
    } 
} 

ので、さらに説明するために、私のコードは、(私のIDEによる)良いだろう、私のいずれかのエラーを含みません行、実行する準備。プロジェクトを実行するためにアプリケーションクラスを実行しますが、コンパイルエラーが発生します。

IntelliJはエラーが発生したファイルを自動的に開きます。これは、私のThymeleafConfigクラスです。エラーが存在する場合、インポートステートメントimport org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect;はグレー表示され、認識されません。クラス内でエラーが発生します。

修正するには、pom.xmlファイル - > Maven - > Reimportを右クリックします。これにより、すべての依存関係が再インポートされ、すべてが正常に戻ります。

私は、アプリケーションを実行するたびにこれが発生しないことを強調したいと思います。 3回連続して実行されることもありますが、エラーが再発する前に5回以上実行します。

私は問題を解決していないmvn cleanを試しました。また、依存関係をpom.xmlファイルの別の行に移動しました。

編集: は、ここで私は右、このファイルをクリックして実行「アプリケーション」ボタンをクリックしてアプリケーションを実行するには、私のApplication.javaクラス

@SpringBootApplication 
public class Application { 

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

です。

+0

あなたが喜ばも、正確にあなたが/構築アプリケーションを実行する方法を教えてください。あなたが何とかライブラリを削除したり、クラスパスを破っているように思えます。 –

+0

もちろん - 編集を参照してください –

+1

私のpom.xmlに15以上の他の依存関係があります。 –

答えて

0

スプリングブートにはすでにthymeleaf(別のバージョン)が含まれているため、おそらくクラスパスに複数のバージョンがある可能性があります。春ブーツはそのマニュアルのthymeleafについてかなり明確である:

Spring boot 1.4.2's documentationデフォルトでthymeleaf 3.0.0

を使用して、春・ブート・スタータthymeleafはThymeleaf 2.1を使用しています。あなた 春ブート・スターター・親を使用している場合は、例えば、thymeleaf.versionとthymeleafレイアウト-dialect.version プロパティをオーバーライドすることにより、 Thymeleaf 3を使用することができます。

...

あなたは(春のセキュリティ、データの属性、またはJava 8時間)その他の自動設定Thymeleafエクストラ のいずれかを使用している場合も Thymeleaf 3.0と互換性のあるものにそのバージョンのそれぞれを上書き 必要があります。

あなたはspring-boot-dependency's pom on githubを見れば、thymeleafプロパティは次のとおりです。

<thymeleaf.version>2.1.5.RELEASE</thymeleaf.version>   
<thymeleaf-extras-springsecurity4.version>2.1.2.RELEASE</thymeleaf-extras-springsecurity4.version> 

<thymeleaf-extras-conditionalcomments.version>2.1.2.RELEASE</thymeleaf-extras-conditionalcomments.version> 

<thymeleaf-layout-dialect.version>1.4.0</thymeleaf-layout-dialect.version> 

<thymeleaf-extras-data-attribute.version>1.3</thymeleaf-extras-data-attribute.version> 

<thymeleaf-extras-java8time.version>2.1.0.RELEASE</thymeleaf-extras-java8time.version> 

要約

私はあなたが、少なくとも、おそらくいくつかのより多くの(次のプロパティを定義する必要があるだろうと信じてバージョンの不一致を避けるため):

  • thymeleaf.version
  • thymeleaf-エキストラ-springsecurity4.version
+0

あなたが提供したこの「」スニペットを正確に定義するのはどこですか? pom自体または別の設定ファイルにありますか? –

+0

通常、プロパティを定義するのと同じように、あなたのpomでは。 – alexbt

関連する問題