您现在的位置是:首页 >技术交流 >关于一个由于我愚蠢的操作造成了一个我找了一天的bug网站首页技术交流
关于一个由于我愚蠢的操作造成了一个我找了一天的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.xml、application.properties等),如果配置有问题(如 JAR 包缺失或配置错误),会导致运行时错误。 
 -  
 -  
IDEA 的类路径管理:
-  
IDEA 会在项目根目录下生成
.idea目录和*.iml文件,这些文件记录了项目的模块配置和依赖路径。 -  
手动修改依赖后,IDEA 的配置文件可能没有正确更新,导致类路径不一致。重新创建项目后,IDEA 重新生成了配置文件,问题得以解决。
 
 -  
 -  
依赖冲突与版本问题:
-  
手动添加 JAR 包时,可能会引入依赖冲突或版本不一致的问题。例如,Druid 的某个版本可能与其他依赖(如数据库驱动)不兼容。
 -  
重新创建项目后,依赖冲突可能被解决,因此项目可以正常运行。
 
 -  
 -  
可以尝试删除
.idea目录和*.iml文件,然后重新导入项目。(我没试) 
            




U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结