首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JSONArray.fromObject 拋出 StandardWrapperValve invoke 錯誤:JAR 包路徑配置避坑指南

     編輯:Java 綜合教學

JSONArray.fromObject 拋出 StandardWrapperValve invoke 錯誤:JAR 包路徑配置避坑指南

調用 JSONArray.fromObject(list) 時拋出 ClassNotFoundException: net.sf.json.JSONArray,控制台顯示 org.apache.catalina.core.StandardWrapperValve invoke 嚴重錯誤。

錯誤堆疊

GetStationPlace:{StationId=10002, Stationlon=29.90592, Stationlat=121.525976}
haha begin:null
二月 29, 2016 10:37:46 上午 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet [GetStationPlaceServlet] threw exception
java.lang.ClassNotFoundException: net.sf.json.JSONArray
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1722)

根因分析

專案將 json-lib 及其依賴包放在 WEB-INF/lib/json/ 子目錄下,Tomcat 類加載器不會遞歸掃描 lib 子目錄,導致類找不到。

解決方案

將所有必需 JAR 直接放入 WEB-INF/lib/ 根目錄:

  • commons-beanutils.jar
  • commons-collections.jar
  • commons-lang.jar
  • commons-logging.jar
  • ezmorph.jar
  • json-lib.jar
錯誤目錄結構 正確目錄結構

Maven 依賴配置(推薦)

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>
<!-- 依賴會自動傳遞:commons-beanutils, commons-collections, commons-lang, commons-logging, ezmorph -->

驗證步驟

  1. 調整 JAR 位置或更新 Maven 依賴
  2. 清理專案:mvn clean / Eclipse Clean
  3. 重新部署 Tomcat
  4. 測試 Servlet,JSON 序列化正常輸出
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved