`play dist`,` main.css` возвращает 404 - PullRequest
2 голосов
/ 27 марта 2012

Создайте новый пример приложения play2:

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

Поскольку приложение представляет собой встроенный пример, предоставленный play2, не означает ли это, что это ошибка play2?

PS:

Файл routes:

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

И Assets.scala, предоставляемый play2:

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 {
    ...
  }

  ...
}

Кажется, что play пытается найти каталог и файл, существующие на диске, но этот каталог public упакован в test-1.0-SANPSHOT/libs/test_2.9.1-1.0-SNAPSHOT.jar, а не в настоящий файл.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2012

Решено для меня: просто убедитесь, что файл main.css не пустой.

1 голос
/ 27 марта 2012

Он не может найти этот CSS-файл, даже если вы выполняете «play run», поэтому он не имеет ничего общего с упаковкой его в банку.

...