今回の苦労した点は
conf/内のファイルが読め込めない!! というもの。
やりたいこととしては、
conf/内に何かしらのファイルを置いておいて、application.confに記述したパスを参照して、Javaで読み込むというもの。(PlayでJava?という気持ちは内にしまっておいてください。。。)
開発環境で動作させるrunやstartですと問題ないのですが、本番環境で運用する為のstageやdistをして実行すると読め込めないという状況が起きました。
まずは、
//application.confを読み込みにいく Config config = ConfigFactory.load(); //ファイルパスを取得 String filePath = config.getString("filePath"); //ファイルパスからFileインスタンスを生成 File file = new File(filePath); //NullPointerException
このコードで実行すると、ファイルが見つかりません。
ConfigFactory.load()を利用するとデフォルトでapplication.confを読みにいくのですが、runやstartと違ってstageやdistしたパッケージ内にはconf/が存在していないのでパスが違ってエラーになります!!
ではどうしたものか・・・
色々調べてみると、
便利なものが存在しました!!
play.Application.getFile(String relativePath)
このメソッドはアプリケーションのルートパスからの相対ファイルを取得するというもの。
アプリケーションのルートパスの参照ならconf/も存在するので、ファイルも取得出来る!!
それでは、
//application.confを読み込みにいく Config config = ConfigFactory.load(); //ファイルパスを取得 String filePath = config.getString("filePath"); //ルートパスからファイルを取得 File file = Play.application().getFile(filePath);
これでファイルを取得出来ました!!
因に、application.confに記述するパスは
conf/path
となります。