SpringMVC Maven项目引入百度push,报错java.lang.ClassNotFoundException

本文介绍在Maven管理的springMVC项目中正确引入百度push jar包且编译不报错的情况下,运行时出现java.lang.ClassNotFoundException的解决方案: 右键工程选择"properties",选择"Deployment Assembly"后点击"add",在弹出的窗口中选择"Java Build Path Entries",选择跟云推送相关的两个jar包:"bccs-api-3.0.1.jar"和"ezmorph-1.0.6.jar"后点击finish完成添加。

问题的背景是:基于springMVC框架搭建的服务端,采用maven 进行依赖包的管理,IDE工具为eclipse

在集成百度云push推送到基于springMVC的服务端时,按照百度云推送的文档进行操作后编译能正常通过,即jar包已经正确导入了
百度push ClassNotFoundException

但是部署到tomcat执行时总是报错:java.lang.ClassNotFoundException

在集成百度云推送的SDK时,由于云推送的jar包并没有maven源,所以只能通过在eclipse的”Configure Build Path”的形式手工导入新的jar包,入下图所示

在导入完这些包后,集成云推送的SDK后能编译成功,但是在执行到与SDK相关的第一句代码PushKeyPair pair = new PushKeyPair(apiKey,secretKey)时,出现错误:java.lang.ClassNotFoundException:

原因是:之前所有依赖的jar包都是通过maven管理的,项目只导入了”Maven Dependencies”,如图所示
java.lang.ClassNotFoundException

但是由于云推送的jar包是手工加入的,所以需要再手工加入到”Web Deployment Assembly”

具体步骤为:

  1. 右键你的工程选择”properties”
  2. 选择”Deployment Assembly”后点击”add”
  3. 在弹出的窗口中选择”Java Build Path Entries”
  4. 选择跟云推送相关的两个jar包:”bccs-api-3.0.1.jar”和”ezmorph-1.0.6.jar”
  5. 点击finish完成添加

上述步骤如下图所示:
java.lang.ClassNotFoundException

注意:如果之前没有将”Maven Dependencies”加入到部署的Source中,需要将”Maven Dependencies”也加进去哦!

最后的正确配置结果如图所示:
java.lang.ClassNotFoundException