予想外に時間を要したのでメモ。
やりたかったことは、PDF作成時に利用する日本語フォント用ファイル(*.ttf
)の読み込み。
(フォントファイルに限らずtxt
ファイルでもxml
ファイルでも同様です。)
アプリケーションを実行するサーバのファイルシステムに配置して絶対パスで読み込む方法は避けたい(効率が悪い・不具合に発生しやすい)ので、ファイルをプロジェクトに含めたい。
様々な方法があると思いますが、一番簡単な方法としてはconf
ディレクトリの下に読み込みたいファイルを配置すること。
[project directory]
|
+--app
| |
| +-- controller
| |
| +-- views
|
+--conf
|
+-- *.ttf ← ここ
こうすることでClassLoader.GetReousrce()
メソッドで取得できます。
File file = new File(getClass().getClassLoader().getResource(ファイル名).getFile());
以下の方法はgetReourse()
メソッドで取得できませんでした。(結果がNULL)
- プロジェクトディレクトリの下に
resources
ディレクトリを作成してその下にファイルを配置。ビルド対象にする - appディレクトリ下に
resources
ディレクトリを作成してその下にファイルを配置。