[ 
https://issues.apache.org/jira/browse/FREEMARKER-160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17213138#comment-17213138
 ] 

Stefan Huber commented on FREEMARKER-160:
-----------------------------------------

I see the point. It may be an issue with the default behavior of 
IntelliJ/Gradle since the in a test method 
{code:java}SupportedDatabases.class.getResource(""){code} returns the path of 
the class files in the build directory not within the packaged jar. However, 
the resource files are not next to the classes files but in a separate folder 
per default until an actual jar is packed. So I added another Gradle task which 
copies the resource files next to the class files in the case of running test 
cases. Still, I could not make it work that way so far.


> Resources not found
> -------------------
>
>                 Key: FREEMARKER-160
>                 URL: https://issues.apache.org/jira/browse/FREEMARKER-160
>             Project: Apache Freemarker
>          Issue Type: Bug
>    Affects Versions: 2.3.30
>            Reporter: Stefan Huber
>            Priority: Major
>         Attachments: packageStructure.png
>
>
> Used technologies:
>  * JDK 14
>  * Gradle 6.5
> I use {code:java}setClassForTemplateLoading(SupportedDatabases.class, 
> Path.get("templates", "mysql")){code} to specify the location of all my 
> template files. Eventhough the files are seemingly correctly placed relative 
> to the loading class (see attachment), resources are not found and the 
> following error is thrown:
> {code:java}
> Caused by: freemarker.template.TemplateNotFoundException: Template not found 
> for name "checkDBExistence.ftlh".
> The name was interpreted by this TemplateLoader: 
> ClassTemplateLoader(resourceLoaderClass=bayern.steinbrecher.dbConnector.query.SupportedDatabases,
>  basePackagePath="templates/mysql/" /* relatively to resourceLoaderClass pkg 
> */).
> {code}
> I figured out that based on https://stackoverflow.com/a/14740160 
> {code:java}Thread.currentThread().getContextClassLoader(){code} is a way more 
> reliable choice in context of my modular projects.
> For testing the bug the following minimal setup can be used:
> - Java project (Maven or Gradle) that imports 
> {code}bayern.steinbrecher:DBConnector:0.9{code}
> - A main function which consist of the following call 
> {code:java}SupportedDatabases.values(){code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to