【问题标题】:Apache Velocity 2.0 Scripting Compilable not workingApache Velocity 2.0 Scripting Compilable 不工作
【发布时间】:2017-08-16 13:17:52
【问题描述】:

我正在尝试检查提供 JSR 223 实现的速度脚本引擎 2.0 和 support of Compilable

Compilable接口已经在进程中实现了。

我使用 jars:velocity-engine-scripting-2.0.jar、velocity-1.7.jar、commons-collections-3.2.2.jar

来自previous answer我使用如下代码

//class org.apache.velocity.script.VelocityScriptEngine
final ScriptEngine engine = engineFactory.getScriptEngine();
        if (engine instanceof Compilable) {
            try {
                ((Compilable) engine).compile("");
 ...

对于速度,我得到以下信息:

javax.script.ScriptException: org.apache.velocity.exception.ResourceNotFoundException: No template name provided
    at org.apache.velocity.script.VelocityScriptEngine.compile(VelocityScriptEngine.java:311)
    at org.apache.velocity.script.VelocityScriptEngine.compile(VelocityScriptEngine.java:288)
    at com.Workers.LevelCheck.main(LevelCheck.java:69)
Caused by: org.apache.velocity.exception.ResourceNotFoundException: No template name provided
    at org.apache.velocity.runtime.resource.loader.StringResourceLoader.getResourceStream(StringResourceLoader.java:353)
    at org.apache.velocity.Template.process(Template.java:108)
    at org.apache.velocity.script.VelocityScriptEngine.compile(VelocityScriptEngine.java:306)
    ... 2 more

另外,当我尝试提供模板名称 ((Compilable) engine).compile("v.vm"); 时,同样的异常失败

【问题讨论】:

    标签: java velocity scripting-language jsr233 apache-velocity


    【解决方案1】:

    你不能将velocity-engine-scripting-2.0.jar与velocity-1.7.jar一起使用,你需要使用velocity-engine-core-2.0.jar 否则你会得到不可预知的结果。

    【讨论】:

    • Velocity 使用 slf4j,它允许用户通过选择将哪个 slf4j binding 放入类路径中来选择日志的输出。例如,您可以将 slf4j-simple 添加到类路径中,默认情况下它会记录到 stderr。
    猜你喜欢
    • 2018-03-13
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多