1 记录一下之前遇到的一个问题
因为很久之前了的问题了并没有图片,我尽量描述清楚一点。这个问题一度让我怀疑人生,甚至去更新了最新版本的idea,仍然没有解决。
2 问题描述
用tomcat写了一个web应用。用到了servlet,可是不知道咋回事,我修改servlet里的输出内容,然后重新编译输出,结果运行出来的页面就是不改变!!倔得很,我一度认为是不是idea出bug了,非常难受。经过我不懈努力和反复的修改,终于。。。还是没啥卵用。
3 问题解决
于是我大规模的删减代码(本来也就是练习用的项目,随便删哈)。直到把用到的那个servlet给删掉了,神奇的事情发生了,那个servlet没了,我居然还能访问到他的url!!!这是怎么肥四??
当我把我编写的代码都删得差不多了,我终于注意到了idea自动生成的文件–>out目录。
大概就长这样,之前的项目已经改好了,这里就看个样式。
这个out目录是干啥的呢?
idea把我们写好的servlet、jsp、xml、java代码等等编译完了会放到out目录中,我们运行项目,其实是从out目录中读取字节码文件的。我打开看了一下,发现项目结构集体错位了(这个原因我现在也没明白,算是个冷门问题吧)。我之前编写好的servlet的字节码文件赫然显示在里面,也就是说,idea把他放在了一个错误的路径中,所以我每次重新编译tomcat项目,idea只会在正确的目录下生成字节码,而这个错误路径下的字节码就侥幸存活了下来,因为idea无法找到它,也无法删除它。可能是他的目录比较靠前,优先级高于正确目录下的字节码,所以idea会优先读取错误的字节码!!
该怎么做?
删掉out目录,重新deploy,让idea重新给你编译生成一个out目录就好了
最后
这个问题还有个疑点,为啥out目录里的文件会错位呢??我想来想去,可能和我使用idea是更新了一个插件,中途因为网速问题,更新失败了。也许是这里搞出啥未知的错误了。。。总之是个冷门问题了,如果你不幸遇到,希望能帮到你