Freemarker template not found exception in Quarkus

61 Views Asked by At

After followed the official documentation and others tutorials, when I run my quarkus 3.6.4 app I get the error:

2024-01-12 10:02:11,412 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /hello?name=max failed, error id: 1dac2036-f070-415a-9ef4-cad4ebfdbed7-1: java.lang.RuntimeException: Error injecting freemarker.template.Template org.acme.HelloResource.hello
        at org.acme.HelloResource_Bean.doCreate(Unknown Source)
        at org.acme.HelloResource_Bean.create(Unknown Source)
        at org.acme.HelloResource_Bean.create(Unknown Source)
        at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:117)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:41)
        at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
        at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:32)
        at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
        at ...
Caused by: jakarta.enterprise.inject.CreationException: freemarker.template.TemplateNotFoundException: Template not found for name "hello.ftl".
The name was interpreted by this TemplateLoader: MultiTemplateLoader(loader1 = ClassTemplateLoader(classLoader="QuarkusClassLoader:Quarkus Runtime ClassLoader: DEV for caronte-1.0.0-SNAPSHOT restart no:0@6de0f580", basePackagePath="freemarker/templates/")).
        at io.quarkiverse.freemarker.runtime.FreemarkerTemplateProducer_ProducerMethod_getTemplate_l8tBZCOFgJ9DySmRlLH9CkgP6Lw_Bean.create(Unknown Source)
        at io.quarkiverse.freemarker.runtime.FreemarkerTemplateProducer_ProducerMethod_getTemplate_l8tBZCOFgJ9DySmRlLH9CkgP6Lw_Bean.get(Unknown Source)
        at io.quarkiverse.freemarker.runtime.FreemarkerTemplateProducer_ProducerMethod_getTemplate_l8tBZCOFgJ9DySmRlLH9CkgP6Lw_Bean.get(Unknown Source)
        at io.quarkus.arc.impl.CurrentInjectionPointProvider.get(CurrentInjectionPointProvider.java:48)
        ... 29 more
Caused by: freemarker.template.TemplateNotFoundException: Template not found for name "hello.ftl".
The name was interpreted by this TemplateLoader: MultiTemplateLoader(loader1 = ClassTemplateLoader(classLoader="QuarkusClassLoader:Quarkus Runtime ClassLoader: DEV for xxx-1.0.0-SNAPSHOT restart no:0@6de0f580", basePackagePath="freemarker/templates/")).
        at freemarker.template.Configuration.getTemplate(Configuration.java:2957)
        at freemarker.template.Configuration.getTemplate(Configuration.java:2759)

My pom.xml:

...
  <properties>
    <compiler-plugin.version>3.11.0</compiler-plugin.version>
    <maven.compiler.release>21</maven.compiler.release>
    <quarkus.platform.version>3.6.4</quarkus.platform.version>
    <skipITs>true</skipITs>
    <surefire-plugin.version>3.1.2</surefire-plugin.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-arc</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy-reactive</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkiverse.freemarker</groupId>
      <artifactId>quarkus-freemarker</artifactId>
      <version>1.0.0</version>
    </dependency>
    ...
  </dependencies>
 ...

My controller:

@Path("hello")
public class HelloResource {
    @Inject
    @TemplatePath("hello.ftl")
    Template hello;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello(@QueryParam("name") String name) throws IOException, TemplateException {
        StringWriter stringWriter = new StringWriter();
        hello.process(Map.of("name", name), stringWriter);
        return stringWriter.toString();
    }
}

My /src/main/resources/freemarker/templates/hello.ftl:

Hello ${name}!

I run my application with this command: mvnw quarkus:dev

I can't figure out what I'm wrong. How can I solve this issue?

0

There are 0 best solutions below