2012-03-27 13 views
2

創建一個新的樣本play2應用:`發揮dist`,在`main.css`返回404

play new test 

然後:

cd test 
play run 

訪問http://localhost:9000,我們可以看到顯示的默認主頁正確。

但是,當我DIST它:

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的bug?

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,而不是一個真正的文件。

回答

1

它無法找到,即使你做「玩跑」是CSS文件,因此它沒什麼用它做被包裝在一個罐子裏。

+0

「play run」正常工作,找到main.css的公共資產。我沒有嘗試過「dist」,但「run」肯定有效。 ?? – flurdy 2012-03-31 19:23:17

+2

他們在郵件列表中表示,即使文件存在,Play也會爲您提供404文件,因爲它沒有任何內容,所以這就是問題所在。 – 2012-03-31 23:40:18

2

解決對我來說:簡單地檢查該文件的main.css不是空的。