Maven的微信公众号项目部署到SAE用户消息无响应

这个问题已经折腾两天了,晚上又花了4个小时搞了一通,终于。。。决定去请教大神(哎,大神就是好用)

先将问题再现,并记录解决问题的过程

1. 问题是微信的token验证可以通过(doGet),但是用户消息无法响应(doPost)。

2. SAE上不知道如何调试,经过大神的一番捣鼓,终于找到了查找SAE日志的地方(刚开始用了最原始的办法:System.out.println())

Maven的微信公众号项目部署到SAE用户消息无响应_第1张图片

不得不抱怨一下这日志种类分的太细,挨个找了一下,才找到我要的

3. 错误信息如下(终于找到了):

Maven的微信公众号项目部署到SAE用户消息无响应_第2张图片

4. 问题的解释找到了(包冲突了)

还要在抱怨一下,说好的打印stack trace,然并卵。不过还好错误信息够我问度娘的了!

只简单地找度娘问了一下Exception was: org.xml.sax.SAXException: Can't create default XMLReader; is system property org.xml.sax.driver set?

就找到了解释(网上大神也真多)

java 系统之中使用的是JDom,Xerces解析器解析XML。在1.4之前,属于java的扩展部分,而在1.5之后,已经加入到了JDK之中了。我的系统之中的java版本是1.6,所以,包含了类路径之中加入的XercesImpl.jar  XML-api.jar,所以,在项目类路径之中加入那两个包以后,会造成冲突,就出现了上述的错误。将其从项目类路径之中删除后,工作正常。

估计SAE上的jre版本有些旧

5. 解决问题

原本的pom.xml中的包依赖

Maven的微信公众号项目部署到SAE用户消息无响应_第3张图片

现在只要将xml-apis去掉就应该没问题了

<dependency>
			<groupId>dom4j</groupId>
			<artifactId>dom4j</artifactId>
			<version>1.6.1</version>
			<exclusions>
				<exclusion>
					<groupId>xml-apis</groupId>
					<artifactId>xml-apis</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

用exclusions标签来解除依赖

最后再重新打包war包,部署到SAE,OK!!!

你可能感兴趣的:(maven,包冲突,sae,war包,xml-apis)