[英]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.