博客
关于我
写在java文件的语句没编译到class文件中的解决办法
阅读量:768 次
发布时间:2019-03-23

本文共 1072 字,大约阅读时间需要 3 分钟。

在Java项目开发过程中,我曾遇到过类似的问题,尤其是在搭建日志框架(如Log4j)以及编写 debug 语句时。以下是我解决该问题的完整经历和思考过程。

问题描述

我在 log4j.properties 中进行了修改,并尝试在 Java 代码中添加了一个 System.out.println("111111111111111111111111"); 这样的输出语句。然而,在项目启动后运行到该处时,我发现在代码中并没有看到该语句的输出。此外,在检查 webapps 目录下的编译文件时,发现 log4j.properties 没有发生变化,而新增的语句也未能编译到 class 文件中。

###_VALUEScream

测试步骤与问题排除

为了确定问题根源,我采取了以下措施:

1. 移除现有部署文件

我首先删除了 Tomcat 安装路径下的 webapps 目录下部署的项目文件。在重新部署项目后,发现问题依旧存在。新的部署文件中,仍然没有出现我所添加的输出语句,也没有改变 log4j.properties 内容。

2. 使用反编译工具检查

通过反编译工具,我对新增的 Java 类文件进行了分析,发现引入的输出语句并未出现。这表明我可能在项目编译过程中未正确执行代码变更,或者部署文件并未正确同步到运行环境中。

3. 重新构建项目并启动

接下来,我在 Eclipse 中点击了 Project 按钮,并选择了 Build Automatically 选项。这一步骨据我了解,能够确保所有相关文件重新编译并生成最新版本的 class 文件。然而,重新启动项目后,我惊喜地发现,原本不存在的输出语句终于得以在控制台中显示。这说明问题出在项目的自动编译机制上。

反思与解决方案

从前一次的失败经验中,我学会了以下几点:

  • Tomcat 文件缓存问题:有时,即使项目文件发生变化,Tomcat 也可能因为之前的缓存文件而继续使用旧版本。此时手动删除旧文件或使用 Tomcat 的管理界面清理缓存是一个有效的解决方法。
  • 自动编译功能的重要性:通过设置 Build Automatically,确保了项目在每次保存代码后就能自动重新编译。这可以帮助我及时发现和修复错误。
  • 反编译工具的有限性:虽然使用反编译工具有时能提供快速解决方案,但最终还是需要通过实际运行环境来确认问题是否解决。

通过上述步骤和反思,我成功找到了问题的根源,并对项目的部署和开发流程有了更深入的理解。这次经历让我意识到,细节的处理和自动化工具的运用对于开发效率的提升至关重要。

转载地址:http://znezk.baihongyu.com/

你可能感兴趣的文章
NAT-DDNS内网穿透技术,快解析DDNS的优势
查看>>
NAT-DDNS内网穿透技术,快解析DDNS的优势
查看>>
NAT-DDNS内网穿透技术,解决动态域名解析难题
查看>>
natapp搭建外网服务器
查看>>
NativePHP:使用PHP构建跨平台桌面应用的新框架
查看>>
nativescript(angular2)——ListView组件
查看>>
NativeWindow_01
查看>>
Native方式运行Fabric(非Docker方式)
查看>>
Nature | 电子学“超构器件”, 从零基础到精通,收藏这篇就够了!
查看>>
Nature和Science同时报道,新疆出土四千年前遗骸完成DNA测序,证实并非移民而是土著...
查看>>
Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论...
查看>>
Nat、端口映射、内网穿透有什么区别?
查看>>
Nat、端口映射、内网穿透有什么区别?
查看>>
nat打洞原理和实现
查看>>
NAT技术
查看>>
NAT模式/路由模式/全路由模式 (转)
查看>>
NAT模式下虚拟机centOs和主机ping不通解决方法
查看>>
NAT的两种模式SNAT和DNAT,到底有啥区别?
查看>>
NAT的全然分析及其UDP穿透的全然解决方式
查看>>
NAT类型与NAT模型详解
查看>>