2011-06-14 64 views
1

我想知道是否有人知道有什麼步驟成功地遵守了戰爭檔案 。我試圖導出爲eclipse上的戰爭,但沒有成功每個 時間我試圖訪問我收到此消息的Web服務:錯誤 503,服務不可用。如何編譯.war文件到i-jetty(android web服務器)?

我甚至試圖編譯Hello servlet的例子,它的負載後 I-碼頭我得到的503錯誤,據我瞭解日食戰爭出口 不工作,我-碼頭,以更好看在聊天2.2.war我 也注意到一些奇怪的文件,如WEB-INF上的classes.zip和META-INF上的一些帶有一些ijetty庫的maven文件夾。

回到開始,我想知道什麼是步驟獲得 爲i-jetty編譯的成功戰爭文件?

感謝您的時間 問候 亞歷山大

+0

你可以發佈stacktraces或類似的東西? iJetty是否支持web.xml中指定的servlet-api版本? – 2011-06-15 07:14:08

回答

1

我試着這樣做,也遇到了各種障礙。但我最終確實運行了。但是,我沒有直接將它部署到服務器,這可能是您的問題。你有沒有試過製作一個.war文件並從i-Jetty應用程序手動下載它?因此,而不是「部署」,嘗試「包」爲您的目標。您是否看過this site

您正在看到classes.zip文件,因爲作爲編譯的一部分,它必須將Java字節碼轉換爲Dalvik VM讀取的格式。它在maven腳本中使用dx工具自動執行此操作。這包含您通常在.dex文件中找到的內容。

希望這有幫助!

1

如果你想知道如何做到這一點,你可以讓我知道嗎? (一種實際的工作方法)

我找到了一個解決方法,只需取classes.zip文件並手動將它放在jetty/webapps/console/WEB-INF/lib文件夾中即可。 這是因爲我認爲尼克鏈接中提到的「壓縮classes.dex文件」不起作用,因爲我無法在應用程序的任何位置找到classes.zip文件。

所以在自己複製之後,我的錯誤503消息就消失了,並且webapp已成功部署。 但是我對這個解決方案並不滿意,因爲要從遊戲商店安裝我的應用程序的人去網站,下載classes.zip文件並將其複製到正確的文件夾是不可行的。

編輯:

哈哈哈!不久我寫了這個答案,我想出瞭如何正確創建classes.zip文件(從應用程序內部署webapp現在可以工作!)。

所以基本上就像官方的i-jetty網站所說的,你需要在你的pom.xml中包含3件東西在網站https://code.google.com/p/i-jetty/wiki/DownloadableWebapps中收聽。 現在只有包含這三個問題纔會面臨的問題是,在較新的Android版本(android-maven-plugin)上,您將面臨與該部分相關的問題。因此,您需要添加以下內容以啓用正確的執行(在關閉插件元素之後添加它,然後再關閉構建元素(<。/插件>點擊此處添加< ./build>,沒有點):

<pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.eclipse.m2e</groupId> 
      <artifactId>lifecycle-mapping</artifactId> 
      <version>1.0.0</version> 
      <configuration> 
      <lifecycleMappingMetadata> 
       <pluginExecutions> 
       <pluginExecution> 
        <pluginExecutionFilter> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-dependency-plugin</artifactId> 
        <versionRange>[2.0,)</versionRange> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        </pluginExecutionFilter> 
        <action> 
        <execute /> 
        </action> 
       </pluginExecution> 
       </pluginExecutions> 
      </lifecycleMappingMetadata> 
      </configuration> 
     </plugin> 
     </plugins> 
</pluginManagement> 

現在,當你運行Maven構建,你會產生你在your_application /目標所需要的your_webapp.war文件/水庫疊加/原始文件夾。將your_webapp.war文件複製到your_application/res/raw文件夾中。現在再次運行maven build。你有它!!該webapp可以現在正確地建立:) 非常感謝讓我思考,從而導致我的解決方案!

1

我得到了你的問題的解決方案。按照以下步驟

1)Install您的設備上的ijetty首先然後jetty文件夾將在SD卡上創建。
2)在你的設備上的jetty文件夾中的webapp文件夾內創建xyz文件夾。
3)複製你的hello.war文件,並粘貼到文件夾中的xyz
4)單擊在本地主機一樣輸入的EditText路徑下載標籤:端口號/ XYZ
6)端口號就是取決於你,你正在使用在ijetty服務器中。
6)上下文名稱必須以可啓動/你可以給喜歡/你好任何名稱

+0

〜「在您的設備上的jetty文件夾中放置的webapp文件夾中創建xyz文件夾。」有沒有辦法在i-jetty應用程序內執行此操作?或者是否必須將adb外殼插入我的手機? – 2014-02-19 19:24:55

0

我提供的步驟是有關我的應用程序(Like4Wifi)。 首先,要明白你不能運行JSP頁面,而只能運行servlet。
爲了有一個工作的例子,下載上面提供的源代碼,並按照步驟:

1). Create your war file and extract it. In this case, the Like4Wifi.war 
2). Get the whole 'com' folder/package from 'classes' folder 
3). dx the whole 'com' folder (./dx --dex --output=com/facebook/like4wifi/Like4Wifi.dex com/facebook/like4wifi/Like4Wifi.class) 
4). Remove original .class file 
5). Rename .dex file to .class 
6a). Create 'classes.zip' at 'WEB-INF/lib' folder 
6b). The content of 'classes.zip' is 'META-INF' folder and its contents and also classes.dex (not the  app_name.dex and without the folder/package tree) 
7). Move 'classes.zip' to 'lib' folder. 
9). Copy the 'Like4Wifi' folder into 'webapps' folder to the mobile. 
10). Copy the other jetty libraries from WEB-INF/lib from the console folder at mobile - VOLUNTARILY 

請保留此應用爲例,不要把它反對的人!

+0

但爲什麼不jsp? – 2016-06-30 10:02:49

+1

在寫這篇文章時它不支持jsp。 – LiTTle 2016-07-26 11:44:11

相關問題