我的java.lang.NoClassDefFoundError问题及其解决

4 篇文章 0 订阅
3 篇文章 0 订阅


拟使用BCE的SMS服务,于是下载了其SDK,加入到我的Portlet里面。出现java.lang.NoClassDefFoundError的错误,费了2-3天来排查。一下为一些记录。


增加JAR包的路径到环境变量: 不行!

链接所说的单独建立一个目录并做相关处理:不行!

         解决办法

         1.项目根目录下新建一个libs文件夹

         2.把要加的包放到这个目录下

         3.右键 Build Path-> Use as source folder

         4.在jar包上右键->add to build path


Clean: not work: 不行!

User Libraries: added to this, try: 不行!

项目下的bce_jar 目录删掉不行.

3rd parties' lib not included? 第三方的也都加入了项目的BCE lib里面。: 不行!
Java Build Path: Ordre and Export : 加入了库(自己加入的库)bce: 不行!


文章(链接在这儿): 解决 使用了maven的项目中的 java.lang.NoClassDefFoundError: ....

加入项目目录WEB-INF\lib ,直接从bce库下面拖过去就可以:至少编译成功了!而且网站可以正常启动了。

初步看和BCE相关的错误没有了!错误变更成如下的:

11:52:04,615 ERROR [http-bio-8080-exec-4][render_portlet_jsp:132] null
java.lang.ClassNotFoundException: com.google.common.base.Preconditions


但是,再运行的对应的功能SaveValue的时候,出现的错误提示如下:(错误变了。)

11:56:11,874 ERROR [http-bio-8080-exec-10][PortletServlet:116] javax.portlet.PortletException: java.lang.NoClassDefFoundError: Could not initialize class com.baidubce.services.sms.SmsClientConfiguration
javax.portlet.PortletException: java.lang.NoClassDefFoundError: Could not initialize class com.baidubce.services.sms.SmsClientConfiguration

在生成的WAR包里面,WEB-INF目录下,出现了对应的JAR包(bce-java-sdk-0.10.4.jar)。至少是更正确了一步。还是从上述文章得到的启发

猜测出现上面的问题,可能是BCE的第三方JAR包没有代入。于是把所有BCE第三方JAR包,都放入了WEB-INF\lib目录下,重新编译发布。可以运行并返回默认页面了。不出现“不可用的portlet”提示了!至于手机能否收到SMS,则是另外的问题了(有大量DEBUG信息可用)!(后记:已经正确发送短信。)


初步结论:Eclipse中的项目中的WEB-INF\lib目录下应该有第三方的JAR包作为库,生成的WAR包将包括这些JAR,这样才能正常运行。



(后记:在胡启稳的教程的下一节,第19课 -  “ Struts2与Liferay的集成使用” 里面,就有将第三方的JAR包,即Struts2的JAR包放入WEB-INF\lib的演示。早看到的话,就能省一些时间了!)




















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值