"クラスパス"リソースローダーに切り替えると、速度テンプレートにアクセスできないようです。私は/ WEB-INF/classes/templates/WEB-INF/templatesにtemplatesディレクトリを置いて、/ WEB-INF/libにtemplates.jarを作成しようとしました。それらのどれも働かない。何か案は?これらのファイルに対するアクセス許可はすべて正しいです。あなただけの私は過去にそれを行っているか、このクラスパスでベロシティテンプレートが見つかりません
0
A
答えて
1
IIRC、WEB-INF/clasesは、クラスパス3のルートです。それは働いていますが、それを働かせる最良の方法ではないかもしれません。
Properties prop = new Properties();
String absolutePath=new File(Thread.currentThread().getContextClassLoader().getResource("").getFile()).getParentFile().getParentFile().getPath();//this goes to webapps directory
prop.put("file.resource.loader.path", absolutePath+"/WEB-INF/classes/templates");
Velocity.init(prop);
Template t=Velocity.getTemplate("confirmation_html.vm");
p1ng、あなたが/webappsに/ WEB-INF/構造を持っていると仮定すると
7
を「テンプレート/」または「/テンプレート」を試すことができるように
Properties p = new Properties();
p.setProperty("runtime.log.logsystem.class", "org.apache.velocity.tools.generic.log.CommonsLogLogSystem");
/*
// Works fine:
p.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
p.setProperty("file.resource.loader.path", "/path/to/templates");
*/
// Cannot find template with this:
p.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
p.setProperty("class.resource.loader.class", ClasspathResourceLoader.class.getName());
p.setProperty("resourceLoaderPath", "/WEB-INF/classes/templates");
org.apache.velocity.app.Velocity.init(p);
template = org.apache.velocity.app.Velocity.getTemplate("confirmation_html.vm");
0
これは痛いです。クラスパスを置くと、速度テンプレートを変更するたびにサーブレットコンテナがwebappをリロードするため、開発が難しくなります。
org.apache.velocity.tools.view.WebappResourceLoaderを使用することをお勧めします。これは、ファイルをクラスパスに入れないようにすることで開発がはるかに簡単になり、相対インクルードも可能にします。
また、このことについての私の記事をチェックすることができます。Spring-mvc + Velocity + DCEVM
関連する問題
- 1. Logback: "クラスパスでJaninoライブラリが見つかりませんでした"
- 2. ランタイムエラーPowerMock + Mockito:クラスパスにProxyFrameworkImplが見つかりません
- 3. クラスパス(wildfly、maven)にMETA-INF/persistence.xmlファイルが見つかりません
- 4. クラスパス設定でまだ外部Jarが見つかりません
- 5. GAEプロジェクトのクラスパス上のXerces JARが「SAXParserFactoryImplが見つかりません」
- 6. が見つかりませんsgen.exeが見つかりません
- 7. Liferayのベロシティテンプレートの編集に時間がかかりません
- 8. Javaコンパイラが、クラスパスで明示的にファイルを見つけられなかった場合、そのファイルがクラスパスに見つかりませんでした。
- 9. signtool.exeが見つかりませんか?
- 10. サービスエンドポイントが見つかりませんか?
- 11. kSecRandomDefaultが見つかりませんか?
- 12. Proguard.cfgが見つかりません
- 13. iPhone:リソースが見つかりません
- 14. cache_sweeperメソッドが見つかりません
- 15. dllが見つかりません
- 16. symbolicatecrashが見つかりません.dSYM
- 17. [[:コマンドが見つかりません]
- 18. エントリシンボルが見つかりません_start
- 19. Facebook.hが見つかりません
- 20. javapnsファイルが見つかりません
- 21. layoutoptが見つかりません
- 22. ComException:ファイルが見つかりません
- 23. クラウドフロント - ストリームが見つかりません
- 24. Javaservice - サービスクラスが見つかりません
- 25. シンボルエラーが見つかりません
- 26. javacriptエラーが見つかりません
- 27. gdb:(デバッグシンボルが見つかりません)
- 28. phpize - config.m4が見つかりません。
- 29. シンボルが見つかりません:kUTTypeImage
- 30. python-configが見つかりません
私は従わわかりません。ですから、私のテンプレートをWEB-INF/classes /に貼り付け、resourceLoaderPathを "templates /"に設定しますか?私はresourceLoaderPathが何もしていないことさえ確信しています。私は別の例でそれを見ただけです。 – Bradford