起因
最近在项目中遇到这样一个问题,百思不得其解,最后在公司领导的帮助下才发现问题,找到问题后,领导更是惊讶,搞了这么多年开发还从未见过这种类型的问题,当然这个问题也困扰了我很久,有必要记录下来,供其它同学参考交流
问题描述
遇到的问题是这样的,拷了同事的一份Web项目,方便下班后在家测试,结果奇葩就出来了,无论我怎么修改项目都无法连接到本地的数据库上,每次都连接到了公司内部的服务器上,我是在Eclipse(4.5.1)下面部署的 Web 项目,项目结构如下:
数据库配置文件
url:数据库连接地址
username:数据库名
password:密码(这里是加过密的)
问题重现
这是我当时从同事手中拿到的完整项目
导入 Eclipse 之后有个红色的感叹号,当时并没有引起我的足够重视,下面开始部署项目
内网数据库地址,
可以看到服务器已经开启了,也已经可以正常访问,并没有出现什么问题,但我准备部署到本地连接到本地数据库的时候,问题就出现了,怎么部署都并没有什么卵用,甚至出现了以下这种情况
当我把连接数据库配置文件都注释掉之后,项目依然可以运行,只不过连接到的还是公司内网数据库,这时候我整个人都有点崩溃了,难道说连接数据库的配置不是这里?同事给了我肯定的答复,就是在这里…
产生原因
在我出现这个奇葩问题之后,领导也有点好奇,修改数据库密码、清除缓存、把项目移到 MyEclipse中、查看 hosts 配置、重新配置 Tomcat….然而这些努力通通以失败告终,最后项目那个红色感叹号引起了我们的注意,我们在项目的工作路径的编译文件下找到了原因,这是在项目编译路径中发现的
通过Eclipse无论对项目中的配置文件怎么修改,都没有对编译之后的文件产生任何影响,也就是说,无论你怎么修改,项目压根就没有被编译过!!! 因为项目是从同事那里拷过来的,同时也把原本已经编译成功的文件也包含在内,在导入 Eclipse 之后,因为那个红色感叹号的存在,导致无论怎么修改,都没有被编译,加载的时候还是加载的最初编译之后的项目,这也是项目无法在本地部署的原因,因为数据库地址在编译文件里面就没有被修改过!!!
解决
找到了问题之后,就好处理了,找到引起红色感叹号的原因,发现是因为缺少jar包的原因
引申问题:既然缺少 jar 包,为什么项目在无数次 clean 之后,没有出现红色的 X ,而仅仅是一个感叹号,clean 的作用就是将 .class 文件删除,同时重新编译,但在这个项目中却完全没有起到该起的作用..
在重新导入Jar 包之后,该问题也就被解决了..
总结
在运行别人项目的时候一定要先把 .class 下的东西清空一下,包括提交的服务器上的项目 .class文件不应该上传,要运行的项目一定要调整到没有任何问题为止…..