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

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