web-dev-qa-db-ja.com

Spring 3MVCとApacheTiles2の統合エラー

Spring(3.0.4および3.0.5)MVCをApache Tiles(2.1.2、2.1.4および2.2.2)と統合しようとしていますが無駄です。いずれの場合も、次のエラーが発生します。

Java.lang.NoClassDefFoundError:org/Apache/tiles/startup/BasicTilesInitializer

Tilesのドキュメントによると、BasicTilesInitializerは非推奨になりました。 Springの最新バージョン TilesConfigurer が正しいクラスを参照すると思いましたが、そうではなく、同じエラーが発生します。

次の構成を使用して、SpringMVCアプリでタイルをセットアップしています。

<beans:bean 
    id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <beans:property name="definitions">
        <beans:list>
            <beans:value>/WEB-INF/tiles/tiles.xml</beans:value>
        </beans:list>
    </beans:property>
</beans:bean>

<beans:bean 
    class="org.springframework.web.servlet.view.tiles2.TilesViewResolver">      
    <beans:property 
        name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>                
</beans:bean>

理想的には、Spring3.0.5をTiles2.2.2で動作させたいと思います。これらは、この投稿の時点での最新バージョンです。

13
Athens Holloway

_org.Apache.tiles.startup.BasicTilesInitializer_はtiles-core(2.2.1).jarのクラスです。 _tiles-core_ jarをデプロイしたことを確認してください

12
Ralph

タイル3の場合、クラスorg.springframework.web.servlet.view.tiles3.TilesConfigurerを使用します。 spring webmvcにあることを確認してください。

20
iowatiger08

Mavenを使用している場合は、問題を解決するためにこの依存関係を追加できます。

<dependency>
     <groupId>org.Apache.tiles</groupId>
     <artifactId>tiles-servlet</artifactId>
     <version>2.2.2</version>
</dependency>  
8
Carlos

古いスレッドを復活させたことをお詫びするつもりはありません。

EclipseHeliosにSpringMVCプロジェクトが組み込まれています。
Heliosを数日間シャットダウンしてから、今日再開しました。アプリを実行すると、上記と同じ例外が発生しました:Java.lang.NoClassDefFoundError:org/Apache/tiles/startup/BasicTilesInitializer。

私の解決策は、統合されたTomcatサーバーのデプロイディレクトリをクリーンアップしてから、アプリを再デプロイすることでした。初めて再デプロイしたとき、アプリのlibディレクトリには2つのjarしか表示されませんでした。そのため、クリーンアップして再度デプロイした後、必要なすべてのjarが取得され、アプリが再び実行されます。図に行きます。

1
J Slick

タイルのバージョン2.2.2を使用して、同じ問題が発生していました。バージョン2.2.1に切り替えたところ、動作し始めました。これが私の依存関係です:

<dependency>
        <groupId>org.Apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>2.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.Apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>2.2.1</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.Apache.tiles</groupId>
        <artifactId>tiles-api</artifactId>
        <version>2.2.1</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.Apache.tiles</groupId>
        <artifactId>tiles-servlet</artifactId>
        <version>2.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.Apache.tiles</groupId>
        <artifactId>tiles-template</artifactId>
        <version>2.2.1</version>
    </dependency>
0
damian

次のjarがアプリケーションのクラスパスにあるかどうかを確認します。

  1. コモンズ-beanutils
  2. コモンズ-ダイジェスター
  3. log4j
  4. slf4j-api
  5. slf4j-log4j12
  6. タイル-api
  7. タイル-コア
  8. タイル-jsp
  9. タイル-サーブレット
  10. タイル-テンプレート

タイルjarのバージョンは、SpringMVCのバージョンによって異なります。例えば。 Spring MVC 3.2.3(org.springframework.web.servlet.view.tiles3.TilesConfigurer)を使用する場合は、タイル3のjarファイルが必要です。

0
Avinash Kadam

STSを使用していて、Springテンプレートプロジェクト(MVCプロジェクトなど)を使用してプロジェクトを作成した場合は、libディレクトリに何も追加しません。代わりに、pom.xmlmaven構成ファイルを変更します。

0
Gene De Lisa

POMでコンパイル時に提供される依存関係を追加した後でのみ、これを解決できました。

<scope>compile</scope>
0
Manmohan

タイル3の場合、追加する必要があります

tiles-request.jar、commons-digester.jar

0
Lokanad