5

我正在尝试在谷歌应用引擎上使用速度框架。我用 main 方法编写了一个小程序,并尝试在本地运行它。我得到以下异常:

线程“主”org.apache.velocity.exception.VelocityException 中的异常:无法使用当前运行时配置初始化 org.apache.velocity.runtime.log.ServletLogChute 的实例。
  在 org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206)
  在 org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255)
  在 org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795)
  在 org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250)
  在 org.apache.velocity.app.VelocityEngine.init(VelocityEngine.java:107)
  在 Main.main(Main.java:10)
原因:java.lang.UnsupportedOperationException:无法从应用程序属性中检索 ServletContext
  在 org.apache.velocity.runtime.log.ServletLogChute.init(ServletLogChute.java:73)
  在 org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157)
  ... 5 更多

这是我的程序:

import java.io.StringWriter;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;

public class Main {
 public static void main(String[] args) throws Exception{
        /*  first, get and initialize an engine  */
        VelocityEngine ve = new VelocityEngine();
        ve.init();
        /*  next, get the Template  */
        Template t = ve.getTemplate( "helloworld.vm" );
        /*  create a context and add data */
        VelocityContext context = new VelocityContext();
        context.put("name", "World");
        /* now render the template into a StringWriter */
        StringWriter writer = new StringWriter();
        t.merge( context, writer );
        /* show the World */
        System.out.println( writer.toString() );    
 }
}

相同的程序在普通的 Eclipse 项目上运行得很好。可能是什么问题呢?

4

3 回答 3

9
于 2010-01-06T16:25:57.400 回答
2

这可能不是世界末日和故事,但有一个 GAE 兼容软件列表:

http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine

我没有在其中找到 Velocity。有可能人们只是忘记了测试并将其包含在列表中,但 Velocity 也有可能带来一些与 GAE 不兼容的 API。

于 2010-01-06T15:50:32.213 回答
2

Velocity 可以明确地在 GAE/J 上运行。

使用 Velocity 作为模板引擎的Apache Click框架在 GAE/J 上运行没有问题。

它当然需要与通常不同的配置,因为 GAE/J 是一个约束环境,但它仍然有效。

于 2010-07-01T08:17:26.500 回答