常见错误与解决方案:
错误1、服务器重启后,自动停止
解决办法:一般查看E:\Program Files\Apache Software Foundation\Tomcat 7.0\logs,tomcat安装目录下面的tomcat7-stderr.2014-05-10.txt,一般性错误需要在这里面找,错误如下:
严重: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
后来,装了又重启机器,还是不行,然后在重装。目标定位在context上面(service.xml里面的加上的一句话)。看看他到底如何影响你的服务器的。其实,这个可以理解为将服务器的启动项的地址改不了,每次都不会从原来的tomcat里面去找,而是从我们改变的目录底下去找启动文件,然后执行里面的操作。这些操作都是编译完的。
web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>poi</servlet-name> <servlet-class>zhuxuekui.service.SrvPoi</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>poi</servlet-name> <url-pattern>/poi</url-pattern> </servlet-mapping> </web-app>
千万千万不要写错,也不要多写,之前在servlet里面套servlet太不应该,一句的结尾与结束,肯定有其原因。还有就是假如你之前没错,后来突然错了,你就不要在搞以前的操作了。错误肯定发生在后面,而不是前面。这个一定要注意。我是深受其害。
servlet里面的文件可以从下往上看,首先在手机客户端配置好ip地址+/poi(局域网即可),当程序执行到这一步的时候,服务器自动搜索web.xml中的/poi,然后通过servlet-name,找到servlet中的servlet-name,然后找到包名+类名的类。这个其实就有一对标签。servlet 以及 servlet映射。这个操作其实就是通过http通信协议,数据协议用的JSON,然后将数据通过tomcat服务器传至mysql数据库。这两者之间的联系通过两个函数:手机客户端的post 与 服务器端的dopost ,而且,每次他俩都是一对同时执行,就如上面我刚刚讲到的一样,假如客户端提交的是post请求,那么服务器端执行SrvPoi类中的dopost(),来处理请求,一一对应。
错误2、mysqlworkbench 删掉原来的表后,无法重现再建表。
解决方案:1、不删,直接修改表名,表里面的字段,而不用删除。
2、查找与删除要用合适的方案,不要一味的删数据库或者表。这个操作,貌似还需要重启workbench。
错误3、每次执行到下面这步,程序出错。
TransactionManager.callInTransaction(getConnectionSource(), new Callable<Void>() { @Override public Void call() throws Exception { ArrayList<MKPoiInfo> bdPois = res.getAllPoi(); ArrayList<Poi> pois = new ArrayList<Poi>(); for (MKPoiInfo poi : bdPois) { Poi p = new Poi(poi, "测试用户"); create(p); pois.add(p); } sendPoiToServer(pois); return null; } }); 2014/5/10 21:05:36 程序运行到这一步出错。这是啥问题,请教。
在我们调试错误的时候,学会看日志有时候事半功陪,有些时候纠结很多什么都未必能解决。所以调试时 需要 单步调试(第一个警告栏不用按下)+日志。错误如下:
原因:col_id需要唯一,重复插入相同的数据会失败。
这里介绍下,为什么虚拟机可以与服务器端联系在一起,而手机有时候却不行。
主要还是上面的原因,所以在手机上调试的时候,必须要卸载再卸载。然后在测试。我们可以通过捕捉发现错误之所在。
错误4、如何保证数据传输过去。
解决:1、保证防火墙关闭 2、最好在一个局域网下 3、保证手机浏览器与电脑浏览器都可以连接服务器。可以多测测。IP地址一定要对。
截图: