【问题标题】:Eclipse + Velocity = HTTP Status 500Eclipse + 速度 = HTTP 状态 500
【发布时间】:2015-07-01 22:38:13
【问题描述】:

我在尝试让最简单的 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>

没有使用初始化参数。

问题似乎出在罐子上。

我尝试将两个 Velocity 1.7 jar 复制到 WEB-INF/lib 文件夹中。

我尝试将 jars 作为外部 jars 添加到 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(未知来源)

欢迎任何帮助。

干杯, 丹尼斯

【问题讨论】:

  • 发布完整的错误日志。并考虑使用像 maven 这样的工具来构建和管理您的项目依赖项。
  • 我在描述中添加了异常和根本原因。

标签: java eclipse velocity


【解决方案1】:

原因是 ClassNotFoundException。将依赖项添加到项目中。如果你使用 maven(或其他工具来构建你的项目)就像在 pom.xml 文件中添加依赖一样简单。

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>

【讨论】:

  • 感谢您的 cmets。不幸的是,我无法使 Maven 插件在我的 Eclipse Luna 4.4.2 构建中工作。我已经在这个问题上花费了十多个小时,再也负担不起了。如果不使用 Maven 就无法运行 Velocity jar,那就这样吧。
  • 你可以在不使用 Maven 的情况下使用 Velocity,但是 maven 使得依赖管理变得容易。这是一个Eclipse问题? o Maven 安装问题?
  • 我认为这是一个 Maven 安装问题。通过 Eclipse 界面安装 Maven 插件后,当我尝试创建新的 Maven 项目或尝试将现有项目转换为 Maven 项目时收到错误消息。
猜你喜欢
  • 2011-01-01
  • 2014-01-08
  • 1970-01-01
  • 2012-12-04
  • 2017-11-01
  • 2016-05-29
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多