2017-05-17 36 views
0

我用IDEA和Maven編寫了一個碼頭&球衣嵌入式項目,我把它放在Github https://github.com/Mengqi777/JettyProject。運行JettyServerStart.java啓動服務器,在瀏覽器地址欄中輸入localhost:8080/dynamic,顯示OK,進入localhost:8080/static,顯示靜態資源文件對jetty9部署一個嵌入式Jetty&Jersey戰爭,只能看到靜態文件?

現在我把它打包到war文件,並把它放在碼頭webapps目錄下。但只能看到靜態文件在瀏覽器中輸入localhost:8080/static .404未找到在輸入瀏覽器時出錯localhost:8080/dynamic

發生了什麼?

我該怎麼做才能把這個項目打包成war文件或jar文件併成功在jetty中運行它?

+0

現在我只能在IDEA中運行這個嵌入式項目。我想知道的是如何在沒有IDEA的情況下運行它? –

回答

0

您在JettyServerStart.java中的嵌入式碼頭用法中做了一些事情,您沒有在您的webapp或war文件中聲明/配置它。

這是一個Maven項目,但不聲明爲Web應用程序或戰爭項目(在pom.xml)

它沒有在正確的地方它的WEB-INF(Maven的目錄結構方面),這意味着您的內置戰爭文件無效。

的依賴是不是一個Web應用或戰爭項目申報正確(可以不包括在戰爭文件碼頭服務器)

你厲害位於WEB-INF/web.xml中不執行相同的配置步驟你的JettyServerStart.java

你沒有指定你如何創建你的${jetty.base}目錄來支持這個war文件?

您沒有指定您下載或正在嘗試使用的jetty-distributionjetty-home的哪個版本。

聲明「並把它放在jetty webapps目錄中」不清楚,哪一個? (使用jetty-distribution/webapps是無效的,如果您嘗試將它用於您自己的webapps,則沒有jetty-home/webapps,並且您沒有識別您的jetty-base配置)會導致很多錯誤和警告。

即使你手動組裝,完全跳過maven,你沒有servlet,沒有過濾器,沒有監聽器,沒有初始化器,只有一個Servlet規範要求在url-pattern /上給予你靜態內容的DefaultServlet,你的項目現在就宣佈了。這就是爲什麼訪問http://localhost:8080/static/作品,但沒有別的。

+0

非常感謝,我對Jetty和Maven知之甚少,而且我會更多地瞭解這兩者。 –