創建一個新的樣本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
,而不是一個真正的文件。
「play run」正常工作,找到main.css的公共資產。我沒有嘗試過「dist」,但「run」肯定有效。 ?? – flurdy 2012-03-31 19:23:17
他們在郵件列表中表示,即使文件存在,Play也會爲您提供404文件,因爲它沒有任何內容,所以這就是問題所在。 – 2012-03-31 23:40:18