解決NoClassDefFoundError錯誤

public class ConstUtil {

	/**
	 * 週中文常量
	 */
	public final static Map<Integer, String> WEEK = new HashMap<Integer, String>() {
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;

		{
			put(1, "星期天");
			put(2, "星期一");
			put(3, "星期二");
			put(4, "星期三");
			put(5, "星期四");
			put(6, "星期五");
			put(7, "星期六");
		}
	};

	/**
	 * 變更紀錄類型
	 */
	public final  static Map<String,String> content=new HashMap<String,String>()
	{
		private static final long serialVersionUID = 1L;

		{
			put("0", "姓名");
			put("1","手機號碼");
			put("2","主部門");
			put("3","從屬部門");
			put("4","職位");
			put("5","工作職責");
			put("6","崗位類型");
			put("7","崗位級別");
		}
	};

	/**
	 * 可用於對比的字符串字段
	 */
	public final  static Map<String,String> changeContent=new HashMap<String,String>()
	{
		private static final long serialVersionUID = 1L;

		{
			put("0", "fullname");
			put("1","mobile");
			put("4","position");
			put("5","jobDutyName");
			put("6","positionTypeName");
			put("7","positionLevelName");
		}
	};

}

最近在進行公司項目功能開發的時候,遇到了一個問題,就是服務器報500,檢查日誌後發現是NoClassDefFoundError的錯誤。錯誤中涉及到的類便是上述類,咋一看這個類有些不一樣的地方:類裏面定義的三個hashMap的寫法我之前也是沒有見過。前往編譯後的文件發現如下圖所示,該類被編譯爲四個.class文件。這也正是我遇到的這個NoClassDefFoundError錯誤拋出的原因,我只上傳了ConstUtil.class文件,另外三個沒有上傳。分析後發現,另外三個class文件其實是上述類中的三個map編譯後的,如果沒有上傳,當使用到的時候自然就會拋出NoClassDefFoundError錯誤,把另外三個class也上傳到服務器就解決啦。

不過根據在網上看到的,造成NoClassDefFoundError異常的原因可不止這一個喔。另外此錯誤常與ClassNotFoundException做對比,兩者最大的區別就是前者是Error,後者是異常

本篇博客寫到這裏也就結束了了,感謝大家的閱讀,歡迎大家訪問本人視頻網站使用吐槽牆功能及音樂網站。我在這兒等着你們。

最新重磅推薦:哆啦鬧鈴-電腦工作者必備工具

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章