罗嗦一下:最近在做一个把iJetty集成到安卓软件中的项目,今天经过4小时的折腾,到快绝望了才让我把这个问题给解决掉了,哎,记下,以免别人走我的老路,还有提醒大家,以后多关心下Log。。。

1、制作安卓手机能识别的war包

声明:直接用Eclipse导出的war包,安卓手机是无法解析的,原因是安卓用的java虚拟机是谷歌自己写的,做安卓开发的人都知道为什么,就不说明了。

(1) 把web工程的lib下的jar文件转换成安卓认识的dex文件

以下指令说明:把lib和classes的中与java有关的文件编译成dex并打包到D盘根目录下(dx.bat在android sdk的build-tools中有)

dx.bat --dex --output=D:\classes.zip D:\WorkSpace\Test\WebRoot\WEB-INF\classes D:\WorkSpace\Test\WebRoot\WEB-INF\lib

(2) 把classess.zip文件复制到web工程的lib文件夹下,并删除lib文件夹下所有的jar包,但是classes中的class文件要保留。

(3) 把Web工程打包成war(打开cmd后,先cd到web工程的WebRoot下,如cd D:\Test\WebRoot),注意指令后面的英文句号,有用的!!!

jar cvf Test.war .

(4) 在WebRoot文件夹下会生成Test.war,把它复制放到到安卓的ijetty/webapps下,重启ijetty服务器后,有些手机就可以看到效果了。

2、解决HTTP ERROR: 503 SERVICE_UNAVAILABLE

这个问题百度、谷歌后,基本没人回答的出来,当然问的人也少,我也是最后看到了log之后才知道原因的,以下原因分析:

先看log:

Failed startup of context o.e.j.w.WebAppContext{/Test,[file:/data/data/org.mortbay.ijetty/cache/jetty-0.0.0.0-8080-Test.war-_Test-any-/webinf/, jar:file:/storage/emulated/0/jetty/webapps/Test.war!/]},file:/storage/emulated/0/jetty/webapps/Test.war

java.io.IOException: Couldn't open jar:file:/storage/emulated/0/jetty/webapps/Test.war!/WEB-INF/web.xml

at org.apache.harmony.xml.ExpatParser.openUrl(ExpatParser.java:755)

at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:292)

at javax.xml.parsers.SAXParser.parse(SAXParser.java:390)

at org.eclipse.jetty.xml.XmlParser.parse(XmlParser.java:199)

at org.eclipse.jetty.xml.XmlParser.parse(XmlParser.java:215)

at org.eclipse.jetty.webapp.Descriptor.parse(Descriptor.java:60)

at org.eclipse.jetty.webapp.WebDescriptor.parse(WebDescriptor.java:143)

at org.eclipse.jetty.webapp.MetaData.setWebXml(MetaData.java:165)

at org.eclipse.jetty.webapp.WebXmlConfiguration.preConfigure(WebXmlConfiguration.java:55)

at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:417)

at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)

at org.mortbay.ijetty.deployer.AndroidWebAppDeployer.scan(AndroidWebAppDeployer.java:203)

at org.mortbay.ijetty.deployer.AndroidWebAppDeployer.doStart(AndroidWebAppDeployer.java:63)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)

at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:63)

at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:53)

at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:91)

at org.eclipse.jetty.server.Server.doStart(Server.java:263)

at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)

at org.mortbay.ijetty.IJettyService.startJetty(IJettyService.java:704)

at org.mortbay.ijetty.IJettyService$JettyStarterThread.run(IJettyService.java:159)

Caused by: java.util.zip.ZipException: Local File Header signature not found; was F0C75E71

at java.util.zip.ZipFile.throwZipException(ZipFile.java:427)

at java.util.zip.ZipFile.getInputStream(ZipFile.java:283)

at java.util.jar.JarFile.getInputStream(JarFile.java:389)

at libcore.net.url.JarURLConnectionImpl.getInputStream(JarURLConnectionImpl.java:222)

at org.apache.harmony.xml.ExpatParser.openUrl(ExpatParser.java:753)

... 21 more

上面说IO流出错,Test.war的WEB-INF目录下的web.xml文件无法打开,其实原因很简单,这里是因为程序没有读SD卡权限造成的,谷歌在安卓4.1后加入了读SD卡权限,刚好我使用的模拟器是4.4版本,而且刚好iJetty也没有加入读SD卡权限,所以会报错,所以加上读SD卡权限后,问题解决,完成!!!

————————————————

版权声明:本文为CSDN博主「GitLqr」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/csdn_lqr/article/details/50917336

jetty布署war_I-Jetty部署war包到安卓手机相关推荐

  1. linux 解压war到root_部署War包到Tomcat根目录位置(Ubuntu/CentOS)

    操作系统:CentOS 5.6 对于ubuntu 14.04来说,Tomcat的war包默认目录路径位置在 /var/lib/tomcat7/webapps 对于ubuntu 18.04来说,Tomc ...

  2. Jboss7或者wildfly部署war包的问题

    如果在Jboss7或者wildfly中部署war包是遇到类似如下错误: "{"JBAS014671: Failed services" => {"jbos ...

  3. 史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!!

    史上最详细阿里云服务器上Docker部署War包项目 实战每一步都带详细图解!!! 部署jar 包方式: https://blog.csdn.net/weixin_45821811/article/d ...

  4. 部署WAR包实时查看Tomcat的状态和日志

    在不重启Tomcat的情况下部署WAR包实时输出日志的方法: 注意:以下方式只适合Linux. 一.定位错误 查看Tomcat日志的尾部 tail -n 50 /opt/tomcat8/logs/ca ...

  5. Liferay 部署war包时候的deployDirectory 细节分析

    引入: 在上文中,我们从宏观上讲解了Liferay部署war包的动作是如何触发监听器并且完成部署过程的,但是其中最核心的一块deployDirectory我们没讲,它的作用是当有了临时目录并且已经把w ...

  6. python3 自动打包部署war包

    2019独角兽企业重金招聘Python工程师标准>>> 1 调用maven 命令打包 mvn -B -f D:/workspace/ksdcourse clean package 2 ...

  7. linux系统部署war包,查看tomcat日志

    1.部署war包 app/tomcat/bin 在tomcat/bin 目录下启动 .startup.sh,在启动过程中tomcat会对war包进行解压,形成相应的项目目录 执行命令: ./start ...

  8. Weblogic Server上部署War包

    利用各种IDE工具,将项目打成War包(当然,也可以直接在IDE中将服务器配置成Weblogic Server),部署到 Weblogic上,有多种方法:   1.利用Console控制台:      ...

  9. (转)用 Maven 部署 war 包到远程 Tomcat 服务器

    转自蒋国纲 www.cnblogs.com/guogangj/p/5505228.html 用Maven部署war包到远程Tomcat服务器 过去我们发布一个Java Web程序通常的做法就是把它打成 ...

最新文章

  1. pandas读取csv文件发生编码(encoding)错误:获取文件编码格式之后再读取文件
  2. hex editor怎么搜索代码_代码审计从入门到放弃(三) phplimit
  3. linux简单快速启用web
  4. HDU-1874 畅通工程续 (最短路径启蒙题)
  5. VBA_Excel_教程:过程,函数
  6. python opencv输出mp4_Python玩转视频处理(四):视频按场景进行分割
  7. 多窗口售票:单件模式多线程实现
  8. bootstrap 兼容哪些浏览器
  9. 如何使用jQuery更改超链接的href
  10. 如何打开苹果Mac触控板的三指拖移功能?
  11. this的作用(转)
  12. SmartDeblur-图片模糊处理器
  13. maple 2018 窗口关闭提示乱码_Stata15:一次性转码,解决中文乱码问题
  14. bp神经网络算法原理 Levenberg Marquardt
  15. 关于照片(img)的水平居中和垂直居中
  16. Linux内核中dev_info、dev_dbg、dev_err及动态调试
  17. 树莓派Ubuntu21.04,树莓派4b/4g,Python3.9.5搭建PyTorch
  18. linux创建sudo用户组,如何将用户添加到sudo组
  19. H5推流解决方案测试环境搭建指南
  20. 已知x,h求y(信号处理)

热门文章

  1. 大数据前景和就业方向又是什么样的呢?
  2. 你是否正被浅薄语言所同化?(L先生说)
  3. 程序员月薪2万,却因提出AA制,被月薪不到6000的女研究生拒绝
  4. c++ operator百样操作符重载(详解)
  5. 智能锁SI522A+SI14T=13.56MHZ+触摸资料研发
  6. 如何搭建php虚拟主机环境,在本地如何搭建虚拟主机环境?
  7. 微信公众平台--提升篇
  8. Electron 打开保存文件对话框
  9. 穿越火线(CF) AI 自瞄 代码 权重 数据集 亲测可用(结尾有资源)
  10. Shell命令打开文件所在文件夹并在其中定位到文件