我的java.lang.NoClassDefFoundError问题及其解决
来源:互联网 发布:ichart.js下载 编辑:程序博客网 时间:2024/05/22 13:04
拟使用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的演示。早看到的话,就能省一些时间了!)
- 我的java.lang.NoClassDefFoundError问题及其解决
- 解决 java.lang.NoClassDefFoundError的问题
- 一个java.lang.NoClassDefFoundError问题的解决
- 解决“java.lang.NoClassDefFoundError“的问题
- java.lang.NoClassDefFoundError问题的解决
- 针对Android java.lang.NoClassDefFoundError 某个问题的解决
- Exception in thread "main" java.lang.NoClassDefFoundError问题的解决
- 一般java.lang.NoClassDefFoundError异常错误的问题和解决
- 如何解决java.lang.NoClassDefFoundError问题
- 解决Java.lang.NoClassDefFoundError
- Android java.lang.NoClassDefFoundError的解决
- 解决java.lang.NoClassDefFoundError错误的方法
- Exception in thread "main" java.lang.NoClassDefFoundError 问题及其解决方法
- java.lang.NoClassDefFoundError问题
- 【问题】java.lang.NoClassDefFoundError
- 纠结+郁闷的java.lang.NoClassDefFoundError问题
- java.lang.NoClassDefFoundError问题的解决办法
- java.lang.NoClassDefFoundError问题的解决办法
- java基础——bufferedinputstream FileInputStream inputstream的比较
- java mysql 高性能批量处理 设置rewriteBatchedStatements
- 递归介绍
- Mac中的快捷键
- VDMA之MM2S和S2MM接口调试验证
- 我的java.lang.NoClassDefFoundError问题及其解决
- Permission denied (publickey,keyboard-interactive). fatal: The remote end hung up unexpectedly 解决方法
- Android在SQLite中使用事务
- python新技术
- kaprekar常数(6174猜想)
- HTML的绝对定位与相对定位
- Android修改状态栏背景色
- linux开机自启服务的一些技巧
- 静态方法类