直接修改class文件内容即使是文本会导致App异常,正确方式是修改java再用生成的class替换掉原有的class

简介:

前几天来了个小任务,把某项目中某人的邮件地址改了下。

由于对项目不熟悉,于是采用find方式找出app中所有包含某人邮件地址的文件都找出来了。

xml,properties大约三四个,还有两个class。

当时也没想太多,把class像xml一样用VI改了,心想改的是可见文本,应该问题不大,然后重启tomcat。也没测试一下。

今天打开发布在tomcat上的url,发现打不开了,心想应该是修改class导致的。到tomcat_home的logs文件夹下一看,还真是那两个类出错了,而且当时没留下备份,当时那刻还是挺慌的。

于马上翻文档,终于从SVN上下载了当时代码,三年前的,当年的工具也没有,还好Java代码是全的,于是用MyEclipse新作工程,再导入需要的包,修改文本值,还好,class顺利编写出来了。

再FTP登录,用新class替换老class,重启TOMCAT,项目如愿跑起来了,这下子真正清楚,为啥很多文章反复强调一定要把配置信息写到xml或是properties文件里面了。对开发团队来说,也许修改XML和JAVA是同样的工作量,但是对运维团队就大不一样了。

有应急预案,冷静沉着应对问题是今天没出岔子的关键。

这件小事得到两个教训:1.修改文件前必须先备份好;2.class文件必须是编译的版本,不能是修改的。如果大不幸没有源码,只要反编译,修改得到的Java,再编译回去。

于是记之,希望对遇到同样问题的人有所帮助。

 

 











本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/xiandedanteng/p/3303333.html,如需转载请自行联系原作者


相关文章
|
11天前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之在使用MaxCompute的Java SDK创建函数时,出现找不到文件资源的情况,是BUG吗
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
26 0
|
16天前
|
Java Unix Windows
|
1天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
6 0
|
1天前
|
Java 关系型数据库 MySQL
【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常
【JAVA进阶篇教学】第八篇:Java链接MySql数据库异常
|
1天前
|
Java 索引
【JAVA基础篇教学】第七篇:Java异常类型说明
【JAVA基础篇教学】第七篇:Java异常类型说明
|
2天前
|
Java
JDK环境下利用记事本对java文件进行运行编译
JDK环境下利用记事本对java文件进行运行编译
9 0
|
4天前
|
存储 Java 开发者
探索Java开发中触发空指针异常的场景
作为一名后端开发者在Java编程的世界中,想必大家对空指针并不陌生,空指针异常是一种常见而又令人头疼的问题,它可能会在我们最不经意的时候突然出现,给我们的代码带来困扰,甚至导致系统的不稳定性,而且最可怕的是有时候不能及时定位到它的具体位置。针对这个问题,我们需要深入了解触发空指针异常的代码场景,并寻找有效的方法来识别和处理这些异常情况,而且我觉得空指针异常是每个Java开发者都可能面临的挑战,但只要我们深入了解它的触发场景,并采取适当的预防和处理措施,我们就能够更好地应对这个问题。那么本文就来分享一下实际开发中一些常见的触发空指针异常的代码场景,并分享如何有效地识别和处理这些异常情况。
19 1
探索Java开发中触发空指针异常的场景
|
4天前
|
Arthas 安全 Java
java服务报错 FileNotFoundException:打开的文件过多
java服务报错 FileNotFoundException:打开的文件过多
14 0
|
5天前
|
SQL 网络协议 Java
Java异常详解
Java异常详解
8 1
|
7天前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。