我玩了!生成.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文件。
答案 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
变量的值)。您可以尝试按照之前阅读的answer或question上的建议进行操作。这是你的偏好。
注意:
这里要注意,因为您将生成的文件放在这样的目录中。如果执行
play clean
或play clean-all
命令,则target/*
文件和文件夹中的所有文件都将被删除。所以,请注意!