【问题标题】:Paths in Play 2.xPlay 2.x 中的路径
【发布时间】:2013-05-10 16:35:13
【问题描述】:

我有戏!生成 .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";

好吧,除非我搞砸了其他东西,否则它不会像我预期的那样工作 - 开发与生产的路径没有什么不同。它总是这样结束:

project/application/public/images/image.png

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

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

【问题讨论】:

    标签: playframework-2.0


    【解决方案1】:

    如果你用这段代码写文件:

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

    在使用Play.application().path().getPath(); 时,您始终会获得根项目目录 路径因此,无论您处于生产模式还是开发模式,您都应该获得根项目目录的路径,并且您始终将该文件写入@ 987654325@(作为fullpath变量的值)。您可以尝试按照您之前阅读过的answerquestion 上的建议进行操作。这是您的偏好。


    注意:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      相关资源
      最近更新 更多