2012-12-21 39 views
14

Tôi cần thêm một số tệp thuộc tính vào ứng dụng của mình. Tôi đã thêm tập tin này vào thư mục controller, nhưng không thể tải chúng (không có trong classpath?) - InputStream là null. Nơi để đặt tập tin này để có thể được truy cập?Nơi đặt tài nguyên?

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 
    // ... 
} 

Trả lời

23

Bạn phải đặt nó trong thư mục conf của ứng dụng Play.

Bạn cũng có thể sử dụng thư mục con trong thư mục conf.

Ví dụ:

conf/foo/bar.txt 

có thể được truy cập bằng:

InputStream in = MyClass.class. getResourceAsStream("/foo/bar.txt") 

Bạn cũng có thể thêm một thư mục nguồn tùy chỉnh trong ứng dụng của bạn, bằng cách cập nhật tập tin project/Build.scala của bạn và thêm:

val main = play.Project(appName, appVersion, appDependencies).settings(
     ... 
     resourceDirectory in Compile <<= baseDirectory/"myresources" 
     ... 
) 
+5

Với phiên bản mới hơn của 'sbt', bạn sẽ viết:' resourceDirectories in Compile + = baseDirectory.value/" myresources "' –

Các vấn đề liên quan