无法在默认包以外的包中创建Servlet,Eclipse Indigo报错求助
嘿,我之前在Eclipse老版本里也碰到过类似的坑!你遇到的这个无法解析类型java.io.ObjectInputStream错误,看起来和package声明本身无关,而是Eclipse的项目构建配置出了问题,尤其是JRE或者Servlet容器的关联上。给你几个亲测有效的解决方案:
检查并修复JRE系统库配置
这个是最常见的原因:右键你的项目 → 选择Properties→ 进入Java Build Path的Libraries标签页。看看JRE System Library是不是用了正确的JDK(不是精简版JRE),如果显示的是JRE而不是JDK,或者版本不对,就先移除它,然后点击Add Library→JRE System Library→ 选择Installed JREs里的JDK版本(比如JDK 1.6,因为Indigo对应这个版本),确认后应用。用Target Runtime关联Servlet容器,别手动加jar
很多新手会手动把servlet-api.jar放进项目,但这很容易导致冲突。正确的做法是:右键项目 →Properties→Targeted Runtimes→ 勾选你已经在Eclipse里配置好的Tomcat版本(比如Tomcat 6/7,和Indigo兼容),然后点击Apply and Close。之后记得把之前手动添加的servlet-api.jar从Libraries里移除,避免类加载冲突。清理Eclipse缓存并重建项目
老版本Eclipse的缓存经常抽风:点击顶部菜单Project→Clean→ 选中你的项目点击Clean。之后右键项目 →Build Project,让Eclipse重新编译所有文件,很多奇怪的错误都会消失。确认Java Compiler版本和JDK匹配
右键项目 →Properties→Java Compiler,确保Compiler compliance level和你用的JDK版本一致(比如JDK 1.6就选1.6),不要选更高的版本,不然会出现兼容性问题。检查package声明的位置
最后确认一下package pack;是Java文件的第一行有效代码,前面只能有注释(比如版权声明),不能有import语句或者其他代码,不然也会导致编译错误(不过你的错误提示更偏向类路径问题,但还是检查下更稳妥)。
按照上面的步骤一步步来,应该能解决你的问题!
内容的提问来源于stack exchange,提问作者nikita aggarwal

