在哪里放资源?

mar*_*osh 18 playframework-2.0

我需要在我的应用程序中添加一些属性文件.我已将此文件添加到controller目录,但无法加载它们(在类路径中没有?) - InputStream为null.可以访问该文件的位置?

public class Application extends Controller {

    static {
        try {
            Properties p = new Properties();
            InputStream in =  Application.class.getClassLoader().getResourceAsStream("accounts.properties");
            if(in != null) {
                p.load(in);
                in.close();
            } else {
                error("null inputstream");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }       
    }

    // Actions below 
    // ...
}
Run Code Online (Sandbox Code Playgroud)

nde*_*rge 27

您必须将其放在confPlay应用的文件夹中.

您还可以在conf目录中使用子文件夹.

例如:

conf/foo/bar.txt
Run Code Online (Sandbox Code Playgroud)

可以使用以下方式访问

InputStream in = MyClass.class. getResourceAsStream("/foo/bar.txt")
Run Code Online (Sandbox Code Playgroud)

您还可以在应用中添加自定义资源目录,方法是更新project/Build.scala文件并添加:

val main = play.Project(appName, appVersion, appDependencies).settings(
      ...
      resourceDirectory in Compile <<= baseDirectory / "myresources"
      ...
  )
Run Code Online (Sandbox Code Playgroud)

  • 对于更新版本的`sbt`,你会写:`编译中的resourceDirectories + = baseDirectory.value /"myresources"` (5认同)