tomcat启动编码等部署遇到问题

2017-02-27 21:01:21

本周出差去给客户配置安装linux下的tomcat和jdk,部署项目。启动tomcat时出现异常Invalid byte 2 of 2-byte UTF-8 sequence.

1

2

3

4

5

6

7

8

9

扫描二维码关注公众号,回复: 9347806 查看本文章

10

11

12

13

14

15

16

17

18

19

20

21

WARNING: Catalina.start using conf/server.xml:

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.

at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)

at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:369)

at com.sun.org.apache.xerces. internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)

at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanData(XMLEntityScanner.java:1242)

at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanComment(XMLScanner.java:769)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(XMLDocumentFragmentScannerImpl.java:1040)

at

com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2954)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)

at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1675)

at org.apache.catalina.startup.Catalina.load(Catalina.java:524)

at org.apache.catalina.startup.Catalina.load(Catalina.java:562)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Met

很明显是编码的原因,加载xml文件时编码导致的。后来发现是server.xml文件,当时由于部署的是多个项目,所以在server.xml里面添加了tomcat的

session共享的配置,如下:在 service.xml 的 host标签添加

1 <!--项目session共享配置-->
2 <Context path="/gove" reloadable="false" crossContext="true" defaultSessionTimeOut="7200"></Context>
3 <Context path="/GovernmentPlatform" reloadable="false" crossContext="true" defaultSessionTimeOut="7200"></Context>

就是因为这一行中文注释,罪魁祸首就是他。当然除了删除这行中文注释以外还可以修改server.xml文件最开始的编码设置。都是解决问题的办法。

顺便把当时vi的/etc 的profile文件中添加的tomcat和jdk的环境变量的配置放在这:

1 export JAVA_HOME=/usr/local/jdk6
2 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
3 export PATH=.:$JAVA_HOME/bin:$PATH
4 export CATALINA_HOME=/usr/local/tomcat6

======二 :unpack200命令。

linux 启动tomcat报错,大意是对应目录下找不到对应的jar文件。因为这次上传的jdk和tomcat文件都是免解压的,进入到对应目录才发现,缺少的jar文
件后缀都是.pack,而不是.jar。 使用 unpack200解压即可。
====三 关于 ./
执行unix或linux中除了path系统变量外的目录下的命令都要加./。
修改用户的 .bash_profile,在 PATH一行最后加上 “:.” (一个冒号,一个点) ,然后退出重新登陆用户就ok了! PATH中没有定义路径,加上就ok了。
./表示当前目录,这是因为linux的默认搜索目录里没有当前目录,所以如果你在当前目录需要执行程序就要加上路径./,用全路径代替也是可以的。
win/dos的默认搜索路径里有当前目录,所以不需要加。其实加上也是一样的效果。
====四
tomcat的server.xml文件中记得 设置解决uri参数传递中文的编码设定,防止出现乱码。

1 <Connector port="8080" protocol="HTTP/1.1"
2 connectionTimeout="20000"
3 redirectPort="8443" URIEncoding="utf-8"/>
发布了104 篇原创文章 · 获赞 1 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/xiaoanzi123/article/details/104390740