我试图让最简单的Velocity项目在Eclipse 4.4(Luna)中运行时遇到很大问题。
我创建了一个在Tomcat 7.0服务器上运行的动态Web项目,该项目已在Eclipse中设置并启动。
我在WebContent文件夹中添加了一个简单的index.vm:
<html>
<body>
#set( $foo = "Velocity" )
Hello $foo World!
</body>
<html>
我像这样修改web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"
version="2.5">
<display-name>Velocity_Test</display-name>
<welcome-file-list>
<welcome-file>index.vm</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.servlet.VelocityViewServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
</web-app>
没有使用init-params。
问题似乎与罐子有关。
我试图将两个Velocity 1.7罐子复制到WEB-INF / lib文件夹中。
我曾尝试将jar作为外部jar添加到java构建路径属性中。
我尝试在部署程序集中添加对jar的引用。
然而,无论我尝试什么,结果始终是:
HTTP状态500 - 实例化servlet类时出错org.apache.velocity.tools.view.servlet.VelocityViewServlet
异常:
javax.servlet.ServletException:实例化servlet类时出错 org.apache.velocity.tools.view.servlet.VelocityViewServlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:603) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310) java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源) java.lang.Thread.run(未知来源)
根本原因:
抛出java.lang.ClassNotFoundException: org.apache.velocity.tools.view.servlet.VelocityViewServlet org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:603) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310) java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源) java.lang.Thread.run(未知来源)
欢迎任何帮助。
干杯, 丹尼斯
答案 0 :(得分:1)
原因是 ClassNotFoundException 。将依赖项添加到项目中。如果使用maven(或其他工具来构建项目)就像将依赖项添加到pom.xml文件一样简单。
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>