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

由于对项目不熟悉,于是采用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,再编译回去。

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

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

  1. LINUX文件内容处理及文本编辑器vim

    Linux基本操作命令 echo命令 echo命令: 把echo后面的内容显示到屏幕. -n 显示内容的时候不显示每行结尾的回车 echo 内容 >> 文件名 表示把内容加到一个文件的末尾 ...

  2. Mac下显示隐藏文件 以及修改 hosts文件内容

    修改hosts 文件内容: 进入etc 文件夹,找到hosts 文件,把该文件复制出来,修改完里面的内容后,先把etc中的hosts 文件删除,然后在把修改后的文件脱机去 可能需要管理员的密码,你输入 ...

  3. 如何修改PDF文件内容,PDF怎么添加背景

    很多的情况下,大家都会遇到PDF文件,不管是在学习中还是在工作中,对于PDF文件,文件的修改编辑是需要用到PDF编辑软件的,在编辑文件的时候,发现文件的页面是有背景颜色的,又该如何修改背景颜色呢,不会 ...

  4. Java&Xml教程(七)使用JDOM修改XML文件内容

    JDOM提供了非常灵活的方式操作XML文件,使用JDOM非常简单而且代码简洁可读性强.前面我们学习了如何使用JDOM解析XML文件,本节介绍如何使用JDOM修改XML文件内容. 在这个教程中,我们准备 ...

  5. 获取input type=file 的文件内容(纯文本)

    一.获取input type=file 的文件内容(纯文本) 1.需求一 通过点击其他事件,来触发 文件选择框(限定格式为 .c 文件),而不是手动鼠标点击触发. [思路:] step1:将 inpu ...

  6. 06_XML的写入_dom4j添加、删除、修改Xml文件内容

    [工程截图] [person.xml]准备一个xml文件 <?xml version="1.0" encoding="UTF-8"?> <st ...

  7. python修改txt文件内容

    ①以r模式打开文件并用readlines方法读入列表l中 ②修改相关行,直接用l[n]形式即可 ③关闭文件 ④以w方式打开文件,用writelines方法写入文件(覆盖文件内容) ⑤关闭文件 需要注意 ...

  8. python文件修改 核心5步,函数实现修改任意文件内容

    文件修改 核心5步1.以读的模式打开原文件,产生句柄f12.以写的模式打开一个新文件,产生句柄f23.读取原文件的内容并将原文件需要替换的内容修改写入到新文件4.删除原文件5.把新文件重名了成原文件 ...

  9. Java&Xml教程(三)使用DOM方式修改XML文件内容

    DOM解析方式也可用于修改XML数据,我们可以使用它完成新增元素.删除元素.修改元素值.修改元素属性等操作. 我们的XML文件,内容如下: employee.xml <?xml version= ...

随机推荐

  1. hihocoder 1866 XOR

    题面在这里 拆位分析一下就OK啦 /* y + (y xor x) */ #include<bits/stdc++.h> #define ll long long using namesp ...

  2. CF1060C Maximum Subrectangle【乘法分配律】【最大子矩阵】

    CF1060C Maximum Subrectangle 题意翻译 现在给出一个长度为N的a数列,一个长度为M的b数列. 现在需要构造出一个矩阵c,其中ci,j​=ai​×bj​.再给出一个x,请在矩 ...

  3. bzoj 2555

    暴力. 收获: 1.第一道后缀自动机,大概知道怎么写了,有一些原理性的东西还要理解. 2.计算right集合的大小 /***************************************** ...

  4. [转]Android Message.obtain() 和Handler.obtainMessage()的区别

        目录(?)[+]   参考:http://www.2cto.com/kf/201311/255885.html http://www.cnblogs.com/over140/archive/2 ...

  5. ROS知识(9)----NodeHandle命令空间问题

    一直被NodleHandle的构造函数的命名空间搞混淆了.例如: ros::NodeHandle node_private("~/"); ros::NodeHandle node_ ...

  6. MySQL内核整理(一)

    一.在共享表空间(系统表空间)中,innodb会维护一些系统信息:1.Internal data dictionary2.Rollback segments3.undo space4.insert b ...

  7. Any way to start Google Chrome in headless mode?

    Any way to start Google Chrome in headless mode? - Stack Overflow Any way to start Google Chrome in ...

  8. powerdesigner 设置字段显示comment注释

    在Columns标签下,一排按钮中找到这个按钮:Customize Columns and Filter

  9. andriod arcgis createPolygons创建带空的面

    private void createPolygons() { // create input polygon 1 PointCollection pointsPoly = new PointColl ...

  10. 打印后台程序服务没有启动,每次打开Powerdesigner都会要我安装打印机

    原因: 不光这个,就是word也需要你有个打印机.随便安一个就可以了.一般系统自带个Microsoft Office Document Image Writer的还报打印机,要是你有这个打印机的话.查 ...