Webアプリで、クラスパス上での URL を求めてみる。
例えば、Wicket の org.apache.wicket.markup.html.WebPage に対して
URL url = WebPage.class.getClassLoader()
.getResource(WebPage.class.getPackage().getName().replaceAll("\\.","/"));
add(new Label("url",url.getPath()));
add(new Label("protocol",url.getProtocol()));
Labelの出力として、HTML ファイルを以下のようにする。
<div wicket:id="url"></div>
<div wicket:id="protocol"></div>
すると、Eclipse ワークスペースを c:\a1\workspace
Webコンテンツ uran という場合、
Label の出力結果は以下のとおり、
file:/C:/a1/workspace/.metadata/.plugins/org.eclipse.wst.server.core
/tmp0/wtpwebapps/uran/WEB-INF/lib/wicket-1.4.12.jar!/org/apache/wicket/markup/html
jar
同様に、Webアプリ上の任意のクラス uran.vel.temp.Velhome というクラスがあった場合、
URL url = Velhome.class.getClassLoader()
.getResource(Velhome.class.getPackage().getName().replaceAll("\\.","/"));
とすれば、以下のように、getProtocol() の結果は、"file" である。
/C:/a1/workspace/.metadata/.plugins/org.eclipse.wst.server.core
/tmp0/wtpwebapps/nadia/WEB-INF/classes/uran/vel/temp/
file
これは、Velocity の file.resource.loader.path に使えるのではないだろうか?