Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring3MVC和ApacheTiles 2集成错误_Spring_Spring Mvc_Tiles - Fatal编程技术网

Spring3MVC和ApacheTiles 2集成错误

Spring3MVC和ApacheTiles 2集成错误,spring,spring-mvc,tiles,Spring,Spring Mvc,Tiles,我一直在尝试将Spring(3.0.4和3.0.5)MVC与ApacheTiles(2.1.2、2.1.4和2.2.2)集成,但都没有成功。在每种情况下,我都会遇到以下错误: java.lang.NoClassDefFoundError:org/apache/tiles/startup/basictlesInitializer 根据Tiles文档,BasicTilesInitializer已被弃用。我认为Spring的最新版本会引用正确的类,但它没有,我仍然会得到相同的错误 我正在使用以下配置在

我一直在尝试将Spring(3.0.4和3.0.5)MVC与ApacheTiles(2.1.2、2.1.4和2.2.2)集成,但都没有成功。在每种情况下,我都会遇到以下错误:

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

根据Tiles文档,BasicTilesInitializer已被弃用。我认为Spring的最新版本会引用正确的类,但它没有,我仍然会得到相同的错误

我正在使用以下配置在我的spring mvc应用程序中设置互动程序:

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

/WEB-INF/tiles/tiles.xml

理想情况下,我想让Spring3.0.5使用Tiles 2.2.2。它们是截至本文的最新版本。

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

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

如果您使用的是maven,则可以添加此依赖项以解决此问题:

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

org.apache.tiles
瓦片servlet
2.2.2

对于tiles 3,使用class
org.springframework.web.servlet.view.tiles3.tileConfigure
。请确保您在SpringWebMVC中有此功能

我不会为恢复旧线程而道歉

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


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

只有在我在POM中添加了编译时提供的依赖项之后,我才能解决这个问题

<scope>compile</scope>
编译

使用tiles的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>

org.apache.tiles
平铺jsp
2.2.1
org.apache.tiles
砖芯
2.2.1
编译
org.apache.tiles
瓷砖api
2.2.1
编译
org.apache.tiles
瓦片servlet
2.2.1
org.apache.tiles
瓷砖模板
2.2.1

检查以下JAR是否位于应用程序类路径上:

  • 公地小海狸
  • 公地蒸煮器
  • log4j
  • slf4j api
  • slf4j-log4j12
  • 瓷砖api
  • 砖芯
  • 平铺jsp
  • 瓦片servlet
  • 瓷砖模板

  • tiles jars的版本取决于Spring MVC的版本。例如,如果使用Spring MVC 3.2.3(org.springframework.web.servlet.view.tiles3.tilesConfigure),则需要tile 3 jar。

    对于tile 3,您应该添加

    tiles-request.jar, commons-digester.jar


    @雅典,你检查过这个类在罐子里吗?您是否检查过jar是否真的部署到了您的应用服务器上?我正在使用SpringSource工具套件,在检查引用的jar时,我能够看到这个类。我没有部署到远程服务器。当我在调试模式下通过debug As->debug on Server运行应用程序时,会出现错误。您认为这是配置问题吗?瓷砖2.2.2是否由弹簧3支撑?根据Spring的TileConfigure()的文档,它是。雅典:如果你的应用服务器是Tomcat,那么STS/Eclipse将把文件放在project meteata目录中:
    .metadata\.plugins\org.Eclipse.wst.Server.core\tmp\wtpwebapps\\WEB-INF\lib
    -检查这个目录中是否有jar(我想其他服务器也有类似的情况)事实证明,我所要做的就是将这些文件添加到STS项目中的WEB-INF\lib文件夹中。我已经将它们添加到构建路径中,并假设它们将与其余的WEB-INF工件一起部署。这是一个艰难的教训。再次感谢您的帮助。@Athens:(很遗憾您没有使用maven):您应该将运行时所需的所有JAR都放在WEB-INF\lib文件夹中,然后您不能(第二次)将它们显式地添加到项目中。