JAVAWEB開發Myeclipse 項目中報“無法解析類型 java.io.ObjectInputStream,從必需的 .class 文件間接引用了它”解決辦法

JAVAWEB開發Myeclipse 項目中報“無法解析類型 java.io.ObjectInputStream,從必需的 .class 文件間接引用了它”解決辦法

觸發場景

背景:
第一次寫maven項目
jdk:1.8
tomcat:7
目的:
通過maven管理jar包,編譯部署項目(maven clean.maven install 後),完成struts2的http請求跳轉jsp頁面,查看jsp-api的申明是否起效。
(http請求: http://localhost:8080/maven-first/findById.action?custId=12)
報錯1:無法解析類型 java.io.ObjectInputStream,從必需的 .class 文件間接引用了它
報錯2:Exception in thread “main” java.lang.UnsupportedClassVersionError: org/apache

報錯1的處理

一直認爲是elipse默認的jdk1.8.00_xxx(版本號)需要和項目中的 JRE System Library javaSE-1.8版本保持一致
心中的不確定:兩者是否要求是同一個版本的jdk,如果不是,那麼是不是就是報錯的原因?
實際:兩者就是同一個1.8版本,與版本號無關

查閱得知:
報錯1的原因
有可能是jdk版本過高,在項目右鍵構建路徑–> 配置構建路徑 ,在庫(L )列表中把“JRE 系統庫JDK1.8 ” 點擊“除去”,然後再點擊“添加庫(A)”–> 選擇“JRE系統庫" —> 下一步,在備用JRE中 選擇sun jdk1.6,點擊完成。把高版本JDK1.8 替換成低版本JDK1.6,就解決了。
處理:將elipse的綁定jdk1.8更改爲1.6,且保證項目的jdk也是1.6
這次連 運行 maven clean都報錯了,出現了 報錯2 Exception in thread “main” java.lang.UnsupportedClassVersionError: org/apache

報錯2的原因

由於1.6的jdk版本過低,與tomcat6貌似不兼容(執行:mvn tomcat:run 默認是6),試一試jdk1.7是否可行,將elipse的綁定jdk1.6更改爲1.7,且保證項目的jdk也是1.7,成功maven clean 和install,且發送action請求,頁面錯誤1不再出現。
最終處理:項目的jdk版本爲1.7,elipse綁定版本1.7去運行
猜想:由於elipse配置的jdk爲jdk1.8.00_xxx(版本號),項目中的 JRE System Library還可以向下兼容爲 JRE System Library javaSE-1.7,那麼,將elipse綁定版本1.8, 且項目向下兼容爲1.7去運行是否可行?
結果:但是這個1.7實際就是不兼容的1.8

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