xml解析jar在oraclelinux下jar包冲突怎么办

本篇内容介绍了“xml 解析jar 在oracle linux 下jar包冲突怎么办”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

洞头网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。成都创新互联自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联

收到这个bug后,仔细看了一下日志文件,是在tomcat启动的时候,spring进行初始化applicationcontaxt.xml,编码转换错误。

由于这个这个项目在其他平台是可以运行的,初次判断是环境问题。

做了如下尝试

1、发现tomcat的版本是windows版本,所有版本换为相同版本的linxu .

2、发现jdk版本,这本机的不太一样,换了一个jdk1.8最新的版本。

发现问题依然存在。

做2次思考,既然是编码问题,那么就改一下编码:

1、给tomcat启动参数里添加fileecncoding=UTF-8编码参数

2、修改linux操作系统编码

     /etc/profile

export LC_ALL="zh_CN.GBK"
export LANG="zh_CN.GBK"

修改

/etc/sysconfig/i18n

LANG="zh_CN.GBK"
LANGUAGE="zh_CN.GBK;zh_CN.GB18030;zh_CN.GB2312;zh_CN"

3、写了一个jdk一个简单的程序,读取操作系统的编码,以确定 tomcat 能正确的读取编码。

问题依然没有解决

进行第三次思考,仔细看了一下tomcat的日志 

Caused by: oracle.xml.parser.v2.XMLParseExceptionpublicId: -//SPRING//DTD BEAN//EN; systemId: http://www.springframework.org/dtd/spring-beans.dtd; lineNumber: 1; columnNumber: 38; Illegal change of encoding: from gb2312 to UTF-8.

仔细的看了一下xmlparser2的代码,没有发现异常现象。

又仔细的看了一下applicationcontent.xml,和第一个报错的文件TopOA_Routine.xml,发现 applicationcontent.xml 文件的编码格式为utf8,TopOA_Routine.xml的文件格式为gbk,也就是异常里报的gb2312转utf-8错误。大概知道原因,因为第一个是utf-8,所以后面的都按照utf-8处理了。

推断:操作系统在读取文件,或线程共享的时候,做了一些处理。

总结:如果是java项目,非特殊要求,全部都utf8,数据,项目代码,资源文件。至于说大部分操作系统都能成功处理,个别无法处理,只能说测试未完全覆盖。

最后标注一下环境tomcat9.0.12,jdk1.8.0_212-b10,操作系统在centos ,ubuntu是OK的,在     Oracle Linux Server release 6.4

问题最终解决:

造成这个错误的原因时jar包冲突  

javax.xml.parsers.DocumentBuilder 的实现jar包有xmlparser2.jar和 xml-apis ,   xercesImpl-2.8.1.jar 里 

问题的发生时因为 oracle linux 在加载jar包的时候,不知道为什么优先加载的xmlparser2.jar所以报错了。

解决方案:-Xbootclasspath/p:/lib/xercesImpl-2.8.1.jar

使用Xbootclasspath 指定 xercesImpl优先加载,问题解决。

“xml 解析jar 在oracle linux 下jar包冲突怎么办”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


网页标题:xml解析jar在oraclelinux下jar包冲突怎么办
链接地址:http://cdiso.cn/article/jecoje.html

其他资讯