1

Velocity ResourceManager で見つからないVelocity テンプレートValueTmpl.vmがあります。最小限の例:

package generate;

import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;

public class Generate {
    public static void main(String[] args) throws Exception {
        VelocityContext context = new VelocityContext();
        context.put("key", "value");
        Writer writer = new FileWriter(new File("Result.java"));
        createTemplate("generate/templates/ValueTmpl.vm").merge(context, writer);
        writer.close();
    }

    private static Template createTemplate(String vmTemplateFile) {
        VelocityEngine ve = new VelocityEngine();
        ve.setProperty(Velocity.RESOURCE_LOADER, "class");
        ve.setProperty("class.resource.loader.class",
                "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        ve.init();
        return ve.getTemplate(vmTemplateFile);
    }
}

generateフォルダーはsrcディレクトリのルートにあります。次のエラーが表示されます。

21.03.2011 13:09:01 org.apache.velocity.runtime.log.JdkLogChute log
SEVERE: ResourceManager : unable to find resource 'generate/templates/ValueTmpl.vm' in any resource loader.
Exception in thread "main" org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource 'generate/templates/ValueTmpl.vm'

誰かが問題が何であるかを知っていますか? プロジェクト設定で何かを変更する必要がありますか?

前もって感謝します!

4

4 に答える 4

1

私はいつもこれに出くわします。

Settings->Compiler を開き、リソースのリストに「?*.vm」を追加します。そうすれば、/out ディレクトリにコピーされます。.vm ファイルへのパスのルートがプロジェクトでソースとしてマークされていることを確認してください。クラス ローダーはそれを見つける必要があります。

/generate フォルダーを /src の下から移動します。/src と同じレベルに配置します。モジュール設定で「ソース」としてマークし、「テンプレート」からアクセス パスを開始して再試行してください。

于 2011-03-21T11:29:39.563 に答える
0

さて、VelocityEngine に関連するすべてを削除した後に動作するようになったので、次のようになります。

Template t0 = Velocity.getTemplate("src/generate/templates/ValueTmpl.vm");
t0.merge(context, writer);

Jason Dusekに感謝します。

于 2011-03-22T06:59:06.733 に答える