迁移时间--2017年7月9日14:58:12
Author:Marydon

CreateTime--2016年12月25日21:55:09
Author:Marydon
Tomcat问题总结
问题一  

  An incompatible version 1.1.19 of the APR based Apache Tomcat Native library is installed, while Tomcat requires version 1.1.32
解决办法:

这实际上是tomcat推荐使用apache的apr,需要APR1.1.32的版本

问题二
  java.lang.UnsatisfiedLinkError: D:\Studying\tomcat\apache-tomcat-7.0.59\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
解决办法:

tomcat的版本和jdk的位数不一致 

问题三:tomcat启动报错
  Removing obsolete files from server..
  Could not clean server of obsolete files: null
  java.lang.NullPointerException
解决方案:  

sever.xml文件热部署项目时,配置的项目访问路径不能为空即path != ""

<Context docBase="D:\WrokSpaces\eclipse2016\demo-activeMQProducer\WebContent" path="/producer" reloadable="false">
</Context>

问题四
  java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [....\tmp1\wtpwebapps\workreport\] instead of [.....\wtpwebapps\ApprovalFront\]
  - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!
解决方案:  

  1.清理tomcat的webapps目录;
  2.在web.xml中添加

<context-param>
<param-name>webAppRootKey</param-name>
<param-value>jmyb_ty</param-value>
</context-param>

原因:
  在tomcat下部署两个或多个项目时,web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为"webapp.root",如下:

<!-- 应用路径  -->  
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root</param-value>
</context-param>
<!-- <param-value>该参数值需确保唯一性,以免引起项目间的冲突</param-value> -->

问题五:配置/运行tomcat弹出类似这样的报错信息:
  Could not load the Tomcat server configuration at /Servers/Tomcat v6.0 Server at localhost-config. The configuration may be corrupt or incomplete.
解决方案:  

  点击detail-->查看详细错误信息
  a.注释中不能出现"--" -->server.xml中删掉多余的"--"
  b.注释中不能出现"字符串" -->server.xml中设置文件格式为"UTF-8"

问题六
  tomcat服务器server.xml文件中配置中文,启动tomcat出错
解决方案:

使用Editplus打开该文件,右下角有文件编码字符集,双击选择编码UTF-8,保存即可

UpdateTime--2017年3月7日17:06:39
问题七
  Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/demo]] so no cleanup was performed for that container
  javax.naming.NamingException: No naming context bound to this class loader
解决方案:

tomcat jar包缺失,重装tomcat 

UpdateTime--2017年5月12日10:34:58
问题八
  GET方式提交的数据(请求)乱码

说明:利用request.setCharacterEncoding("UTF-8");来设置Tomcat接收请求的编码格式,只对POST方式提交的数据有效,对GET方式提交的数据无效! 

解决方案:  

要设置GET的编码,可以修改server.xml文件中,相应的端口的Connector的属性:URIEncoding="UTF-8",这样,GET方式提交的数据才会被正确解码。

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />


作者:​​Marydon​​