`play dist`,`main.css`返回404

时间:2012-03-27 11:05:15

标签: routes assets playframework-2.0

创建一个新的示例play2 app:

play new test

然后:

cd test
play run

访问http://localhost:9000,我们可以看到正确显示默认主页。

但是当我分开时:

play dist

将生成的dist/test-1.0-SNAPSHOT.zip上传到服务器并解压缩,然后运行:

cd test-1.0.SNAPSHOT
./start

然后访问http://myserver:9000,我发现无法找到css文件。

GET http://myserver:9000/assets/stylesheets/main.css
404

由于app是play2提供的内置示例,并不意味着它是play2的错误?

PS:

routes文件:

# Map static resources from the /public folder to the /public path
GET     /assets/*file                       controllers.Assets.at(path="/public", file)

play2提供的Assets.scala是:

object Assets extends Controller {

  def at(path: String, file: String): Action[AnyContent] = Action { request =>

    val resourceName = Option(path + "/" + file).map(name => 
        if (name.startsWith("/")) name else ("/" + name)).get

    if (new File(resourceName).isDirectory 
       || !new File(resourceName).getCanonicalPath.startsWith(new File(path).getCanonicalPath)) {
      NotFound
    } else {
    ...
  }

  ...
}

似乎播放试图找到磁盘上存在的目录和文件,但public目录打包在test-1.0-SANPSHOT/libs/test_2.9.1-1.0-SNAPSHOT.jar中,而不是真实文件。

2 个答案:

答案 0 :(得分:2)

为我解决:只需检查文件main.css是否为空。

答案 1 :(得分:1)

即使你进行“游戏运行”也无法找到CSS文件,所以它与打包在jar中无关。