Spring 3 MVC和Apache Tiles 2集成错误

时间:2011-02-15 13:06:24

标签: spring spring-mvc tiles

我一直在尝试将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会引用正确的类,但它没有,我仍然会得到同样的错误。

我正在使用以下配置在我的spring mvc app中设置Tiles:

<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>

理想情况下,我希望Spring 3.0.5能够使用Tiles 2.2.2。它们是本文的最新版本。

9 个答案:

答案 0 :(得分:19)

对于图块3,请使用类org.springframework.web.servlet.view.tiles3.TilesConfigurer。确保您在spring webmvc

中拥有该内容

答案 1 :(得分:10)

org.apache.tiles.startup.BasicTilesInitializer是一类tiles-core(2.2.1).jar。检查您是否已部署tiles-core jar

答案 2 :(得分:8)

如果您正在使用maven,那么您可以添加此依赖项以解决问题:

<dependency>
     <groupId>org.apache.tiles</groupId>
     <artifactId>tiles-servlet</artifactId>
     <version>2.2.2</version>
</dependency>  

答案 3 :(得分:1)

我不会为恢复过时的线索而道歉。

我有一个用Eclipse Helios构建的Spring MVC项目 我关闭了Helios几天,然后今天重新打开它。当我运行我的应用程序时,我得到了与上面相同的异常:java.lang.NoClassDefFoundError:org / apache / tiles / startup / BasicTilesInitializer。

我的解决方案是清理集成Tomcat服务器上的deploy目录,然后重新部署应用程序。我第一次重新部署,我的应用程序的lib目录只显示了两个罐子。因此,在再次清理和重新部署之后,它获得了所有必要的jar,现在我的应用程序再次运行。去图。

答案 4 :(得分:0)

如果您正在使用STS并且使用spring模板项目(如MVC项目)创建了项目,那么您不会向lib目录添加任何内容。而是修改pom.xml maven配置文件。

答案 5 :(得分:0)

我只能在我的POM

中添加依赖项以便在编译时提供后解决这个问题
<scope>compile</scope>

答案 6 :(得分:0)

我遇到了同样的问题,使用版本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>

答案 7 :(得分:0)

检查以下jar是否在应用程序类路径上:

  1. 公地BeanUtils的
  2. 公地消化器
  3. 的log4j
  4. SLF4J-API
  5. SLF4J-log4j12
  6. 瓦片-API
  7. 瓦片核
  8. 瓦片-JSP
  9. 瓦片-的servlet
  10. 瓦片模板
  11. tiles jars的版本取决于Spring MVC的版本。例如。如果使用Spring MVC 3.2.3(org.springframework.web.servlet.view.tiles3.TilesConfigurer),则需要tile 3 jar。

答案 8 :(得分:0)

对于图块3,您应该添加

  

瓦片-request.jar,   公地digester.jar