Как исправить «класс не найден исключение» при создании динамического класса с использованием шаблона скорости - PullRequest
0 голосов
/ 10 мая 2019

Я создал шаблон класса, используя шаблон скорости, и передал ему динамические переменные. Он создал для меня класс, но когда я попытался загрузить этот класс, он показал мне «исключение класса не найдено», так как класс отсутствует в пути к классам. Есть ли решение, с помощью которого я могу загрузить этот класс?

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);
        }
}
}

1 Ответ

0 голосов
/ 10 мая 2019

Сгенерированный вами исходный файл .java. Java требует .class скомпилированных файлов.

Так что, так или иначе, вам нужно будет скомпилировать ваш сгенерированный класс. И как это сделать, зависит от вашей среды, вашей системы сборки и ваших потребностей. Это может сводиться к вызову javac из ваших сценариев сборки или программной компиляции с последующей загрузкой класса, как подробно описано в этом вопросе .

...