2011-01-04 9 views
1

私たちはwarにコンパイルされたweb mavenモジュールを持っているので、servlet-api jarを直接インクルードする必要はありません。これには<scope>provided</scope>を使用します。servlet-apiへの依存関係を管理するには?

問題は、自分のクラスの1つをテストするために小さなmain()を書くときに発生します。これは単体テストではなく、コード自体と一緒に存在します。

これはjava.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequestに失敗します。

public static void main(String[] args) { 
    final Injector injector = Guice.createInjector(new StandardModule()); 
    // StandardModule is our standard module, with bindings to 
    // something that rightfully depends on servlet API 
    ... 
} 

、2つまたは3つの異なるモジュールに私のモジュールを分割するだけでなく、私は考えていない簡単な回避策はありますか?

おそらく、このテスターをテストコードに移動することをお勧めします。

答えて

3

<scope>test</scope>をテスト用に使用することができます。しかし、providedはEclipseでうまく動作します。クラスパスに追加されます。

+0

スコープ:コンパイルはデフォルトのスコープです。これは望むものではありません(戦争にjarを追加するためです)。スコープ:テストは動作するはずです –

+0

はい、私はそれを削除しました。 :) – Bozho

+0

コードを「テスト」フォルダ(IntellijではEclipseではなくbtw)に移動し、それは魅力的に機能します。ありがとう。 – ripper234

1

m2clipseでeclipseを使用すると、<scope>provided</scope>が正しく解決され、メインクラスが正しくコンパイルされて実行されます。