如何在使用速度模板创建动态类时修复"class not found exception"



我已经使用速度模板创建了一个类模板,并将动态变量传递给了它。它确实为我创建了一个课程,但是当我尝试加载该类时,它显示了我"找不到的例外",因为该类不存在于类路径中。有没有解决此类的解决方案?

mainclass.vm//类的模板

public class $className
{
public static void main (String[] args ){
  System.out.println("Hello $name");
}
}
HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        String className = "MainClass";
        try{
         /*  first, get and initialize an engine  */
        VelocityEngine ve = new VelocityEngine();
        ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
        ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
        ve.init();
        /*  next, get the Template  */
        Template t = ve.getTemplate( "MainClass.vm" );
        /*  create a context and add data */
        VelocityContext context = new VelocityContext();
        context.put("className", className);
        context.put("name", "World");
        /* now render the template into a StringWriter */
        FileWriter fileWriter = new FileWriter(className + ".java");
        t.merge(context, fileWriter);
        Class.forName("MainClass");
        fileWriter.flush();
    }
        catch(Exception exception)
        {
            System.err.println(exception);
        }
}
}

您生成的是.java源文件。Java需要.class编译文件。

因此,您将需要对生成的类进行编译。以及如何做到这取决于您的环境,构建系统和需求。它可以归结为从您的构建脚本调用javac,或通过编程编译然后加载类,如此问题所述。

相关内容

  • 没有找到相关文章

最新更新