Play 2.x中的路径

时间:2013-05-10 16:35:14

标签: playframework-2.0

我玩了!生成.png图像文件的应用程序,作为我的Web客户端随后显示的可视化过程的一部分。我以为我已经正确设置了写路径但只在DEV模式下测试过。切换到生产模式后,我的Web客户端尝试从正确的位置抓取文件,但我的Java代码不再将文件写入正确的位置。

基本上在DEV中,写路径类似于:

project/application/public/images/image.png

在制作中,写路径必须类似于:

project/application/target/scala-2.10/classes/public/images/image.png

我收集了以下代码以指定文件写入位置是否正常工作?

//Set up paths correctly regardless of where the application is running
String basePath = Play.application().path().getPath();
String fullPath = basePath + "/public/images/image.png";

好吧,除非我已经搞砸了其他东西,否则它没有按照我的预期运行 - 在DEV与Production之间的路径并没有什么不同。它总是这样结束:

project/application/public/images/image.png

各种帖子(例如:Play! Framework 2.0 paths - play run vs play start)建议在我的.conf文件的生产版本中指定路径...我应该使用它开始我的播放应用程序......但老实说,是否有某些原因我发布的代码的某些变体不应该只是工作吗?

编辑: 这可能不会像我期望的那样工作,因为动态生成的文件通常无法回送,因为public /文件夹中的所有资源都被编译成.jar文件。

1 个答案:

答案 0 :(得分:0)

如果您使用此代码编写文件:

String basePath = Play.application().path().getPath();
String fullPath = basePath + "/public/images/image.png";

使用Play.application().path().getPath();时总是得到根项目目录路径因此,无论您在生产或开发模式下是什么,都应该获取根项目目录的路径并始终写入该文件在rootprojectdir/public/images/image.png上(作为fullpath变量的值)。您可以尝试按照之前阅读的answerquestion上的建议进行操作。这是你的偏好。


  

注意:

     

这里要注意,因为您将生成的文件放在这样的目录中。如果执行play cleanplay clean-all命令,则target/*文件和文件夹中的所有文件都将被删除。所以,请注意!