我的java.lang.NoClassDefFoundError問題及其解決

來源:互聯網
上載者:User

擬使用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的示範。早看到的話,就能省一些時間了。)

















聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.