簡體   English   中英

如何將 a.war 文件編譯到 i-jetty(android web 服務器)?

[英]How to compile a .war file to i-jetty (android web server)?

我想知道是否有人知道成功編譯戰爭文件的步驟。 我嘗試在 eclipse 上導出為戰爭,但每次嘗試訪問 web 服務時都沒有成功,我收到此消息:錯誤 503,服務不可用。

我什至嘗試編譯 hello servlet 示例,並將其加載到 i-jetty 后,我收到錯誤 503,據我了解 eclipse 戰爭導出器不適用於 i-jetty,更好地查看 chat-2.2。我也注意到一些奇怪的文件,比如 WEB-INF 上的 classes.zip 和 META-INF 上的 maven 文件夾和一些 ijetty 庫。

回到開頭,我想知道為 i-jetty 編譯成功的戰爭文件的步驟是什么?

謝謝你的時間最好的問候亞歷山大

如果你知道如何做到這一點,你能告訴我嗎? (實際工作方法)

我找到了一種解決方法,只需獲取 classes.zip 文件並手動將其放置在 jetty/webapps/console/WEB-INF/lib 文件夾中。 這是因為我發現 Nick 的鏈接中提到的“壓縮 classes.dex 文件”不起作用,因為我在應用程序的任何地方都找不到 classes.zip 文件。

所以在自己復制之后,我的錯誤 503 消息消失了,webapp 部署成功。 但是我對這個解決方案不太滿意,因為詢問想要將我的應用程序從 playstore 安裝到 go 到網站的人,下載 classes.zip 文件並將其復制到正確的文件夾中是不可行的。

編輯:

哈哈哈。 我剛寫下這個答案,我就知道如何正確創建 classes.zip 文件(從應用程序中部署 webapp 現在可以工作了!)。

所以基本上正如 i-jetty 官方網站所說,你需要在你的 pom.xml 中包含 3 件事,在https://code.google.com/p/i-jetty/wiki/DownloadableWebapps網站上收聽。 現在,僅包含這三個您將面臨的問題是,在較新的 Android 版本(android-maven-plugin)上,您將面臨部件問題。 因此,您需要添加以下內容以啟用正確執行(在關閉 plugins 元素之后添加它,並在關閉構建元素之前添加它(<./plugin> ADD IT HERE <./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/target/res-overlay/raw 文件夾中生成所需的 your_webapp.war 文件。 將 your_webapp.war 文件復制到 your_application/res/raw 文件夾中。 現在再次運行 maven 構建。 你有它:! 現在可以正確構建 webapp 了 :) 非常感謝讓我思考並引導我找到解決方案!

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

1) 首先在您的設備上安裝ijetty,然后在 sdcard 上創建 jetty 文件夾。
2) 在 webapp 文件夾中創建 xyz 文件夾,該文件夾位於您設備上的 jetty 文件夾中。
3) 復制 hello.war 文件並粘貼到 xyz 文件夾
4) 單擊在編輯文本中輸入路徑中的下載選項卡,例如 localhost:port number/xyz
6)端口號取決於您在 ijetty 服務器中使用的端口號。
6) 上下文名稱必須以 / 開頭,你可以給 /hello 之類的任何名稱

我嘗試這樣做,但也遇到了各種障礙。 但我最終還是讓它運行起來了。 不過,我沒有將它直接部署到服務器上,這可能是您的問題。 您是否嘗試過制作一個 .war 文件並從 i-Jetty 應用程序手動下載它? 因此,不要“部署”,而是嘗試“打包”來實現您的目標。

另外,你看過這個網站嗎?

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

希望這有幫助!

我提供的步驟與我的應用程序( Like4Wifi )相關。 首先,了解您不能運行 JSP 頁面,而只能運行 servlets。
為了獲得一個工作示例,請下載上面提供的源代碼並按照以下步驟操作:

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

請將此應用程序作為示例,不要將其與人作對!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM