JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

本文记录了在Eclipse中遇到的JavaWeb项目启动时,报错'The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path'的情况。错误原因是Tomcat路径设置不正确,导致缺少servlet-api.jar。尝试过通过修改项目构建路径、服务器运行环境配置、删除并新建服务器等方法,最终通过在Eclipse中删除并重新添加服务器环境解决了问题。这提醒我们,环境配置的变动可能引发隐藏错误,建议尽量避免频繁更改。

0.环境:

  win7系统,Tomcat配置无误。

1.错误:

  项目中某一.jps页面忽然出现错误,鼠标点上去为:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path.

忽视错误,在Eclipse下启动tomcat的时候,报错为:Eclipse下启动tomcat报错:The archive: D:/Program Files/apache-tomcat-7.0.52/bin/bootstrap.jar which is referenced by the classpath, does not exist.

2.查找原因:

  原本我的Tomcat路径为:D:\Program Files\apache-tomcat-7.0.52\,后来由于重装系统,改为:D:\ProgramFiles\apache-tomcat-7.0.52\,在报错中可以发现是缺少servlet-api.jar,也即tomcat路径问题。

3.尝试解决:

①.  

  1.右键点击项目->build path->configure build path->add library->server runtime->apache tomcat

      2、切换到Java Build Path界面中的Orader and Export,选择Tomcat。

无果,无法添加。

②.

  1.打开Eclipse中tomcat配置,就是双击server选项卡中的tomcat,然后选择openlaunch configuration,如下图所示:

  2.打开以后会出现如下界面:

  3.如上图所示,将错误路径删除,并保证正确配置tomcat-juli.jar和bootstrap.jar这两个jar包的路径。

无果,修改后仍启动不了Tomcat。

③.  

  1.在server选项卡中删除所有server,新建tomcat。

无果,无法新建。

④.

  1.退出 eclipse

  2.到[工程目录下]/.metadata/.plugins/org.eclipse.core.runtime

  3.把org.eclipse.wst.server.core.prefs和 org.eclipse.jst.server.tomcat.core.prefs这两个文件去掉

  4.重启eclipse

无果,没找到org.eclipse.wst.server.core.prefs和 org.eclipse.jst.server.tomcat.core.prefs这两个文件。

⑤.

  1.在Eclipse中,Window-->preference --> servers --> runtime --> environments --> 全部删除

  2.Add-->Browse-->选择本地tomcat文件夹所在位置-->确定 --> finish-->OK

成功!

 

4.结论:

  实际上是preference中路径错误的问题,直接删除掉server再重建的方法不行。

以后在移动相关资源或者依赖资源的时候会对原有的依赖它的项目产生影响。尽量将自己的IDE和相关的环境固定,少做更改,减少那些隐藏的错误出现的几率。

5.后续疑问:(未解)

  重装系统后Tomcat、Eclipse都是重新解压配置的,为何Eclipse会记住重装系统前的路径?

`java.lang.NullPointerException` 是 Java 中的一种运行时异常,通常表示试图访问空对象引用的操作。从堆栈信息来看,这个 `NullPointerException` 发生在以下场景: --- ### 异常解释 1. **核心原因** - 堆栈显示了异常发生的具体位置:`com.javaweb.demo.util.DBconn.addUpdDel(DBconn.java:24)` 表明问题出现在数据库连接工具类 (`DBconn`) 的第 24 行代码处。 - 可能的问题包括未初始化的对象、返回值为空的函数调用等。 2. **可能导致的原因** - 数据库连接对象(如 `Connection`, `Statement` 或者 `PreparedStatement` 等)可能尚未正确实例化就被直接使用。 - 调用了某个为 `null` 的变量的方法或属性。 3. **传播路径分析** - 这个错误从数据库操作方法开始,在用户注册逻辑(`UserDaoImpl.register()`) 和 Servlet 请求处理链中逐步传递并最终抛出。 - 涉及到的关键组件还包括 Tomcat Web 容器中的过滤器 (`WsFilter`, `EncodingFilter`) 和 HttpServlet 默认的服务机制。 --- ### 解决方案建议 1. **检查 DBconn 类** 需要审查 `addUpdDel()` 方法以及它的依赖项是否正常工作。例如: ```java if (connection == null) { throw new NullPointerException("Database connection is not initialized."); } ``` 2. **调试和日志记录** 添加更详细的日志打印以定位到底哪个部分导致了 `null` 值的出现。比如在 DAO 层增加断点验证传入参数的状态。 3. **单元测试覆盖边界条件** 编写针对该功能模块的小型单元测试案例,模拟各种可能出现的情况,并确认它们都能得到合理的结果而不会触发 NPE。 --- #### 示例修复代码片段 假设问题是由于 `PreparedStatement ps = conn.prepareStatement(sql);` 导致,则需要保证之前已经成功建立了有效的 JDBC Connection 对象: ```java public void addUpdDel(String sql){ try{ // 如果这里没创建有效链接就会报错 PreparedStatement preparedStatement= getConnection().prepareStatement(sql); int rowsAffected=preparedStatement.executeUpdate(); }catch(Exception e){ logger.error("Error in executing SQL statement",e); throw new RuntimeException(e.getMessage(),e); } } ``` 同时别忘了在配置文件里设定正确的驱动程序加载语句以及其他必要设置! ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值