1

私はSpringでfreemarkerを使用しています。

これは私の freemarker を設定する方法です:

<bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">     
    <property name="templateLoaderPath" value="classpath:/META-INF/templates"/>    
</bean> 

この構成は実際には正常に機能しており、テンプレートなどを使用してレポートを生成できます。

ただし、Weblogic では、常に次の Exception が発生します。

15 Sep 2012 01:03:02,060 DEBUG DefaultListableBeanFactory.doCreateBean:504 - Eagerly caching bean 'freemarkerConfiguration' to allow for resolving potential circular references
15 Sep 2012 01:03:02,074 DEBUG DefaultListableBeanFactory.invokeInitMethods:1498 - Invoking afterPropertiesSet() on bean with name 'freemarkerConfiguration'
15 Sep 2012 01:03:02,228 DEBUG FreeMarkerConfigurationFactoryBean.getTemplateLoaderForPath:360 - Cannot resolve template loader path [classpath:/META-INF/templates] to [java.io.File]: using SpringTemplateLoader as fallback
java.io.FileNotFoundException: class path resource [META-INF/templates] cannot be resolved to absolute file path because it does not reside in the file system: zip:C:/Oracle/Middleware/user_projects/domains/gppuser/servers/GPPFilesBCSIS/tmp/_WL_user/GPPFilesBCSIS/phxni8/war/WEB-INF/lib/_wl_cls_gen.jar!/META-INF/templates
at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:204)
at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52)
at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.getTemplateLoaderForPath(FreeMarkerConfigurationFactory.java:351)
at org.springframework.ui.freemarker.FreeMarkerConfigurationFactory.createConfiguration(FreeMarkerConfigurationFactory.java:304)
at org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean.afterPropertiesSet(FreeMarkerConfigurationFactoryBean.java:60)

このエラーは実際にはロード中に発生します。この例外を解決して削除する方法を知っている人はいますか? ファイルは実際には提供されたテンプレートを使用してまだ生成されているため、このエラーが何であるかはよくわかりません。

参考までに:私は展開展開を使用していません。

4

1 に答える 1

8

これは心配する必要はありません。ログ レベルは、ERROR や WARNING ではなく、DEBUG であることに注意してください。

テンプレート ディレクトリにアクセスできる場合( 、などjava.io.Fileの内部にないため)、Spring は FreeMarker を直接使用してテンプレートをロードするように構成します。パスを単純なディレクトリにマップできるかどうかを調べるために、Spring は呼び出して、それがスローするかどうかを確認します。その場合、Spring は DEBUG レベルでログに記録し、FreeMarker を構成して、Spring のリソース抽象化を介して (もちろん使用せずに) テンプレートをロードします。したがって、それはあなたの場合の通常のプログラムフローです。jarwarjava.io.FileResource.getFile()IOExceptionResource.getFile

于 2012-09-15T01:57:35.713 に答える