Spring 3 MVC and Apache Tiles 2 Integration Error

血红的双手。 提交于 2019-12-09 00:34:04

问题


I have been trying to integrate Spring (3.0.4 and 3.0.5) MVC with Apache Tiles (2.1.2,2.1.4 and 2.2.2) to no avail. In every case i get the following error:

java.lang.NoClassDefFoundError: org/apache/tiles/startup/BasicTilesInitializer

According to the Tiles documentation, BasicTilesInitializer has been deprecated. I figured the latest version of Spring's TilesConfigurer would reference the correct class, but it doesnt and I still get the same error.

I'm using the following configuration to setup Tiles in my spring mvc app:

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

Ideally, I would like to get Spring 3.0.5 working with Tiles 2.2.2. They are the latest versions as of this post.


回答1:


org.apache.tiles.startup.BasicTilesInitializer is a class of tiles-core(2.2.1).jar. Check that you have deployed the tiles-core jar




回答2:


For tiles 3, use class org.springframework.web.servlet.view.tiles3.TilesConfigurer. Make sure you have that in spring webmvc.




回答3:


If you are using maven then you can add this dependency in order to solve the problem:

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



回答4:


I'm not going to apologize for reviving a stale thread.

I have a Spring MVC project built in Eclipse Helios.
I shut down Helios for a few days, then reopened it today. When I ran my app, I got the same exception as above: java.lang.NoClassDefFoundError: org/apache/tiles/startup/BasicTilesInitializer.

My solution was to clean the deploy directory on the integrated Tomcat server, then re-deploy the app. The first time I redeployed, my app's lib dir showed only two jars. So after cleaning and redeploying again, it then got all the necessary jar's and now my app runs again. Go figure.




回答5:


If you are using STS and you created your project using a spring template project (like the MVC one) then you don't add anything to the lib directory. Instead you modify the pom.xml maven config file.




回答6:


I could only solve this after I added dependency to be provided at compile time in my POM

<scope>compile</scope>



回答7:


I was having same problem, using version 2.2.2 of tiles. I switched to version 2.2.1 and it started to work. Here are my dependencies:

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



回答8:


Check if the following jars are on the application class-path:

  1. commons-beanutils
  2. commons-digester
  3. log4j
  4. slf4j-api
  5. slf4j-log4j12
  6. tiles-api
  7. tiles-core
  8. tiles-jsp
  9. tiles-servlet
  10. tiles-template

Version of tiles jars is depends on the version of Spring MVC. E.g. If Spring MVC 3.2.3 (org.springframework.web.servlet.view.tiles3.TilesConfigurer) is used then tile 3 jars are required.




回答9:


For tiles 3, you should add

tiles-request.jar, commons-digester.jar



来源:https://stackoverflow.com/questions/5003995/spring-3-mvc-and-apache-tiles-2-integration-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!