2013-07-11 123 views
28

STS(eclipseプラグイン)とmavenを使用してSpring MVCアプリケーションを開発しています。StackOverflowErrorのためWebアプリケーション[/ app]のアノテーションのスキャンを完了できません

プロジェクトを作成するために、新しい「Spring MVCプロジェクト」のためにSTSウィザードに従った。その後、他のプロジェクトやライブラリにいくつかの依存関係を追加しました。インストール「達人に続いて「クリーンMavenを」、発行する場合

SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/wsa]] 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
    ... 
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/app] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was [org.bouncycastle.asn1.ASN1EncodableVector->org.bouncycastle.asn1.DEREncodableVector->org.bouncycastle.asn1.ASN1EncodableVector] 
    at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2179) 
    ... 

しかし、私は今、STSの統合のvFabricサーバにプロジェクトを展開しようとしていたとき、私は時々例外を取得します"とサーバーの再起動、例外がスローされない場合があり、アプリケーションは正常に動作します。しかし、ほとんどの場合、それは動作しません。

注釈のためにbouncycastle依存関係をスキャンする必要はありません。
いくつかのjarファイルに対してこのスキャンを無効にすることはできますか?

すでにweb.xmlにmetadata-complete="true"を追加して、スタックサイズを増やしてみました。

これを解決するにはどうすればよいですか?

+1

*考えられる根本原因には、-Xssと不正な循環継承の依存関係の設定が低すぎます。*メッセージが既にあなたに返答していると思います。 –

+0

次のように:私はすでにスタックサイズを増やしました。私はいくつかの外部依存関係の継承を変更することはできません。スキャンから除外する方法が必要です。 – Matthias

+0

どこでスタックサイズを上げましたか? –

答えて

0

私は開発のためにTomcatに切り替えました - これまでのところ、変更なしで正常に動作します。

16

サイクリック依存関係があります。 org.bouncycastle.asn1.ASN1EncodableVectororg.bouncycastle.asn1.DEREncodableVectorに依存し、これはorg.bouncycastle.asn1.ASN1EncodableVector ...これは無限のサイクルなので、StackOverflowExceptionになります。

EclipseにMavenプラグインがインストールされている場合は、依存関係階層を見て、これらのクラスを探します。私は同様の問題hereを持つ誰かを見つけ、依存関係のツリーを見てから、サイクリック依存関係を解消するために除外を追加することで解決しました。

+0

ご回答いただきありがとうございます。依存関係ツリーは、それらのライブラリでは全く正常に見えます(循環依存性は認識できません)。 :activemq-amqp:jar:5.8.0:コンパイル \ - org.apache.qpid:proton-jms:jar:0.3.0-fuse-2:コンパイル \ - org.apache.qpid:プロトン:jar:0.3 0.0ヒューズ-2:コンパイル \ - org.bouncycastle:bcpkix-jdk15on:瓶:1.47: \をコンパイル - org.bouncycastle:bcprov-jdk15on:瓶:1.47:compile' 私はからライブラリを除く試して​​みてくださいポームを使用していますか?または展開からのみですか? – Matthias

+0

2つの 'org.bouncycastle *'依存関係があります。あなたの一方が他方に依存しているかどうかを確認できますか?そのうちの1つを削除し、コードがまだ動作しているかどうかを確認してください。それらのうちの1つが他のものに依存する場合、おそらく他のものをダウンロードします。 – g00glen00b

+0

問題は、これらは間接的な依存関係のみであることです。彼らは私が変更できない必要なプロジェクトによって必要とされます。 こうして私のpomファイルのこの依存関係の "除外"リストに "org.bouncycastle"/artifact "bcprov-jdk16"というグループを追加しました。 しかし、運がまだありません。 – Matthias

39

私のケースでは、循環依存を引き起こしていたorg.bouncycastle.asn1.DEREncodableVectorクラスは、クラスパスの2つのjarによって提供されていました。

bcprov-jdk15on-1.47.jar

bcprov-jdk16-1.45.jar除外不要なJAR(bcprov-jdk16-1.45.jar)、それは私が私がbuildConfigファイルにはBouncyCastleライブラリのすべての痕跡を削除し、同じ問題を持っていただけでなく

0

を働きました。依存したり除外したりする痕跡はありません。 crypto.2.0にプラグを追加するだけで、すべて正常に動作します!

1

私は同じ問題を抱え、最終的にそれを修正しました。 あなたのポンポンに移動して、あなたが2つ以上がそれらのいずれかを除外見るべきはBouncyCastle を検索し、それが

0

また必ず重複依存が存在しないようにするためにTomcatの下にlibフォルダをダブルチェック修正する必要があります。

2

この問題が発生しました。他の人たちはすでにこの問題に答えています。私は別のことを言うだろう。

私はあなたがmaven-shade-pluginなどを使用していると思います。それと同様に、すべての依存関係をUber jarにパッケージングしていますね。

あなたはbcprov-jdk14:1.38ASN1EncodableVector

public class ASN1EncodableVector extends DEREncodableVector 

ように定義し、二つ以上の同じクラスが存在する場合 maven-shade-pluginと、それはランダムクラスを選ぶだろうが bcprov-jdk15on:1.52

public class DEREncodableVector extends ASN1EncodableVector 

としてDEREncodableVectorを定義することgrepcodeから見ることができます。この組み合わせを選択すると、循環依存が発生します。他の組み合わせを選択した場合、アプリケーションは正常に動作する可能性があります。 これはあなたが記述した内容と一致します

ただし、ほとんどの場合、動作しません。

確率的なイベントです。

+0

この状態は、自身のBouncy Castleバージョンをバンドルする 'pdfbox-app'に依存することによっても発生する可能性があることに注意してください。 –

2

これは

 <groupId>org.bouncycastle</groupId> 
     <artifactId>bcpkix-jdk15on</artifactId> 
     <version>1.54</version> 

を使用して、私に起こっていた私は

 <groupId>org.bouncycastle</groupId> 
     <artifactId>bcprov-jdk16</artifactId> 
     <version>1.46</version> 

にそれをアップグレードし、それはそれは、すでにビルド設定とエラーに除外されている場合は、それを

0

を固定しているようですまだ存在する場合は、 ビルド前にプロジェクトの作業ディレクトリをクリーンアップしようとすることができます。

maven clean 

-

grails clean 
0

私は同じ問題を抱えていたが、別のソリューションを持ちます。私の矛盾は、bcprov-jdk15on-1.55.jarとtika-app-1.7.jarでした。明らかにtikaには弾力のある城が含まれています。この場合、紛争の原因となる弾力のある城の古いバージョンが含まれています。

関連する問題