Spring3MVC和ApacheTiles 2集成错误
我一直在尝试将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应用程序中设置互动程序: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的最新版本会引用正确的类,但它没有,我仍然会得到相同的错误 我正在使用以下配置在
<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,使用classorg.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是否位于应用程序类路径上:
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文件夹中,然后您不能(第二次)将它们显式地添加到项目中。