最近在Intellij Idea中做Javaweb项目,修改了部分java代码,然后重新部署,运行后发现修改部分没有生效。于是先查找Tomcat运行的最终代码究竟在哪里,先找到idea的项目的Tomcat配置路径如下:
C:/Users/登录用户/.IntelliJIdea2019.1/system/tomcat/项目名称/conf/Catalina/localhost
打开该目录下的ROOT.xml,查看内容:
<Context path="" docBase="F:\WorkingFiles\Projects\CodeSpace\safedogCloudEyes_private\out\artifacts\safedogCloudEyes_private_Web_exploded" />
发现,Tomcat执行的最终代码其实就在 项目 /out/Aritifacts 下面。于是找到修改代码对应的class文件,发现修改的内容并没有被编译进去,也就说这根本不是最新的java代码编译的class。
经过反复试验,发现Artifacts里的内容来源于 WEB-INF/classes ,如下图:
那么解决办法显而易见:将 classes目录设置为Exclude即可,重新部署后解决了该问题。