Load file from '/conf' directory on Cloudbees

前端 未结 3 1408
暗喜
暗喜 2020-12-17 20:52

What we do :

We run Play2 application on Cloudbees and we load a file from \'/conf\' directory (inside the classpath of the application).

These 2 snippets

相关标签:
3条回答
  • 2020-12-17 21:34

    Well, files in '/conf' are in the classpath and not on the filesystem so we need to load the file this way :

    Play.application.resourceAsStream("myfile.json")
    //.resource() also works - depends what we want
    

    Note that we don't put "conf" in the path - files in there are on the classpath in the root.

    Note that in production it comes from a jar/zip, not a file - so getFile is somewhat misleading in play.

    Michael Neale from Cloudbees opened this issue : https://github.com/playframework/Play20/issues/1079

    Cloudbees documentation has been updated : https://wiki.cloudbees.com/bin/view/RUN/Playframework#HLoadingconfigfilesinproduction

    0 讨论(0)
  • 2020-12-17 21:38

    It seems that Heroku run play apps via "play start" or "play run" which is not the recommended way for play apps to run in production - this explains why "conf" is visible there - although this could change in a future version of play.

    0 讨论(0)
  • 2020-12-17 21:41

    I am using play 2.4. What works for me was

    import play.Play;
    import org.apache.commons.io.IOUtils;
    
      String myfile = IOUtils.toString(Play.application().resourceAsStream("myfile.json"));
    

    NOTE: application() is called as a static method.

    0 讨论(0)
提交回复
热议问题