您现在的位置是:首页 >学无止境 >关于一个由于我愚蠢的操作造成了一个我找了一天的bug网站首页学无止境

关于一个由于我愚蠢的操作造成了一个我找了一天的bug

埋了吧汰. 2025-04-05 00:01:02
简介关于一个由于我愚蠢的操作造成了一个我找了一天的bug

背景是我在写一个小的servlet项目,没有使用maven,手动添加各种依赖的jar包到lib里,之后我又手动添加删除了一些jar包,其中一个是关于Druid的jar包,后来在测试一个功能的时候发现一直报找不到Druid类,但是我用junit的单元测试@Test测试了dao层对应的方法,成功得到了正确的数据,所以我就认为Druid没出错,而是一些其他错误导致了IDEA认为是访问Druid的错误。

后来在我搞了一天后,我意识到代码没问题,就是依赖处了问题,然后我重新建了这个项目,复制了之前的代码,重新导入了依赖,这次我没有再改动lib目录内的jar包,然后项目就成功运行了。

请教AI后补充了以下我之前没有了解的知识:
总结:

  • 手动管理依赖的风险

    • 手动添加和删除 JAR 包容易导致类路径(Classpath)不一致或缺失,尤其是在没有构建工具(如 Maven 或 Gradle)的情况下。

    • 手动管理依赖时,IDE(如 IDEA)可能无法正确同步类路径,导致运行时找不到相关的类。

  • JUnit 测试与 Servlet 环境的差异

    • JUnit 测试运行在独立的测试环境中,通常不依赖于外部容器(如 Tomcat)。测试环境可能会使用默认的数据库连接方式(如 HikariCP 或内存数据库),而不会受到生产环境配置的影响。

    • Servlet 容器环境依赖于外部配置(如 web.xmlapplication.properties 等),如果配置有问题(如 JAR 包缺失或配置错误),会导致运行时错误。

  • IDEA 的类路径管理

    • IDEA 会在项目根目录下生成 .idea 目录和 *.iml 文件,这些文件记录了项目的模块配置和依赖路径。

    • 手动修改依赖后,IDEA 的配置文件可能没有正确更新,导致类路径不一致。重新创建项目后,IDEA 重新生成了配置文件,问题得以解决。

  • 依赖冲突与版本问题

    • 手动添加 JAR 包时,可能会引入依赖冲突或版本不一致的问题。例如,Druid 的某个版本可能与其他依赖(如数据库驱动)不兼容。

    • 重新创建项目后,依赖冲突可能被解决,因此项目可以正常运行。

  • 可以尝试删除 .idea 目录和 *.iml 文件,然后重新导入项目。(我没试)

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。