How do I find the absolute path to a Play Framework app?

Neither of those worked on my version of play, so I used this instead: Play.current().path().getAbsolutePath()


Since version 2.5.0, play.Play class is deprecated. It is recommended to inject play.Environment and use the method as follows:

public File rootPath();

The play.Environment singleton also contains some very handy method, which provide files by relative path e.g.

public File getFile(String relativePath);
public URL resource(String relativePath);
public InputStream resourceAsStream(String relativePath);

This answer applies only to older versions of the Play Framework, before v2.

Play has an application path property:

String projectRoot = Play.applicationPath;

This will give you the directory that Play is running from.

I think a better practice is moving the directory outside of your project install directory and placing the path to it in your application.conf as a property. You then retrieve it when needed. For example:

Application.conf:

my.file.path=/tmp/whatever

Code:

String projectRoot = Play.configuration.getProperty("my.file.path");

As of play 2.0: play.Play.application().path().getAbsolutePath()