`

Tomcat中发布的class文件替换失败

阅读更多

前一阵子在客户现场的tomcat中发布了一个项目,后来有修改,改完之后在去发布时碰到了一个很诡异的问题,因为碰到了两次,第一次怎么解决第二次时又忘了,避免第三次再忘记,这里写个博文记录一下。

 

替换的是class文件,也就是编译后的文件,位于web-inf目录下。替换之前的文件A大概约400行,新的文件B约700行,处理经过及结果如下:

1、停止tomcat服务器,用700多行的文件B替换原有400多行的文件A,之后打开文件看400多行,好像没覆盖一样。

 

2、删除原有文件,再次重新替换,结果还是400多行;

 

3、删除tomcat根目录下的work中所有文件,重新替换,重启,结果依旧是400多行;

 

至此觉得诡异了,诡异的地方有两个:一个是无论何如替换好像都没有替换一样,即便“以为的系统用的一直是work中的文件”都删掉了让重新弄了还是没有效果;二个是:通常情况下,若是某个文件正在使用删除时是删除不掉的,但是我这些文件“在tomcat处于启动模式下也就是这些文件备使用的状态下“都能删除,即便是work下的文件,都能删除,这个很奇怪。

 

基于上面第二点的考虑,怀疑系统一直在用原来的旧文件,即便我的新文件被替换了。

 

我有一个习惯,就是每次在替换文件时,都会备份一下原来的文件,理由很简单:万一改后的功能有问题导致系统出错了还可以用旧文件代替一下,至少可以保证系统能够正常运行。(想必有此考虑的不止我一个吧!)保存位置还是在原来的文件夹下,文件名称为:原来的名称+下划线+年月日+.后缀名。

 

怀疑过后,抱着试试看的态度,把所有的替换文件的备份文件都移除出了当前文件夹,重新启动重新测试,果然正确,再打开文件看时,不再是顽固的400多行,变成700多行了,也就是我替换成功了。

 

这个问题很奇怪,我明明替换成功了,为什么每次访问及打开的还是原来的文件?tomcat服务器有脸盲症难不成电脑也有啊,再说了我的文件名称都改了,人家早就下班了为什么服务器和电脑还是揪着人家不放啊?难不成还真有脸盲症??

 

有遇到相同情况且知道原因的同仁、筒子们,记得帮我留个言,不胜感激!

分享到:
评论

相关推荐

    配置tomcat连接池

    2. **配置数据源**:在`context.xml`文件中添加以下配置,记得替换`username`、`password`、`jdbcUrl`等为实际值: ```xml <!-- 配置HikariCP --> type="com.zaxxer.hikari.HikariDataSource" ...

    windows、windows server系统下tomcat 乱码解决方案(包含注册成系统服务)

    - 在Tomcat安装目录下的`conf`文件夹中找到`logging.properties`文件,使用记事本或其他文本编辑器打开。 - 添加或修改以下配置项: ```properties java.util.logging.ConsoleHandler.encoding=GBK java.util....

    springboot实现文件上传下载.zip

    在Spring Boot框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。本教程将详细介绍如何使用Spring Boot实现这两个功能。 首先,我们需要引入相关的依赖。在`pom.xml`文件中添加Spring Web和...

    XmanagerEnterprise服务器操作.doc

    - Class文件:Java编译后的字节码文件,是Java程序运行的基本单位之一。 ##### 2. 服务更新 - **更新位置**:`1.120 的服务更新网址:https://10.79.2.214/` - **操作**:通过指定URL进行服务更新。 - **注意事项...

    快逸报表在J2EE部署中最简实例

    在网上找个很多资料,也按着资料去尝试了多次,最终都以失败告终,也发现大部分文章都是拷贝粘贴来的,真不知道那些作者怎么想的,为什么不亲身测试后再贴到自己博客里呢,好了,废话少说,经过那么多次失败,最终亲测成功,...

    百度web uploader java servlet上传示例

    swf: 'path/to/Uploader.swf', // Flash替换文件 server: 'http://yourserver.com/upload', // 上传地址,这里是Java Servlet的URL pick: '#filePicker', formData: { // 可以在这里传递额外的参数到Servlet }...

    在linux下配置Struts中的Oracle 数据源

    如果应用程序部署在Tomcat服务器上,还需要确保所有必要的JAR文件都被包含在Tomcat的`lib`目录中。具体步骤如下: 1. 将ojdbc14.jar、commons-pool.jar、commons-dbcp-1.2.2.jar、commons-collections-3.2.jar等JAR...

    javaweb期末复习.doc

    ServletException通常表示在Servlet生命周期中出现的错误,而IOException则涉及I/O操作失败。 2. ServletConfig接口的getServletName()方法返回的是web.xml文件中对应的元素的值,这个名称是Servlet的唯一标识。 3...

    jar在linux系统上启动的通用脚本.rar

    这里的`-jar`参数告诉Java虚拟机(JVM)直接执行JAR文件中的`Main-Class`属性指定的主类。如果JAR文件没有问题,程序将会按照预期运行。 在阿里云服务器上部署Spring Boot项目,Spring Boot以其内置的Tomcat服务器...

    java 遇到的各种异常

    - 如果确实需要替换集合,可以考虑移除原有集合中的所有元素,并添加新集合中的所有元素。 #### Tomcat相关异常 **1. `java.io.EOFException`** - **异常描述**:读取流到达文件末尾前就已结束。 - **原因分析**...

    javaweb登录界面

    3. **配置JavaWeb环境**: 在IDEA中创建一个新的JavaWeb项目,并配置好Tomcat服务器。 #### 三、数据库设计与创建 1. **新建数据库**: - 打开MySQL客户端,使用命令行或图形界面工具新建一个数据库。例如,这里...

    javabean数据库连接

    - 将 `Conn.java` 文件保存在 Tomcat 的 myapp 目录下,使用 `javac Conn.java` 编译。 - 成功编译后,会在相应的目录下生成 `SqlConn` 包及其下的 `Conn.class` 文件。 - **在 JSP 页面中使用 JavaBean**: - 在...

    简单的jsp连接access实例

    请确保替换上述代码中的数据库文件路径、表名和列名。 **三、注意事项** 1. 数据库驱动:Access的JDBC驱动是通过ODBC桥接实现的,因此需要在系统中设置ODBC数据源。你可以通过控制面板的ODBC管理器来配置。 2. ...

    jbpm连接mysql数据库的实例以及问题解决方案

    然而,集成过程中可能会遇到一些问题,例如连接失败或事务处理异常。以下是一些常见问题的解决方案: 1. **权限问题**:如果遇到权限错误,检查MySQL用户是否有创建表和读写数据的权限。 2. **时区问题**:如果你...

    jsp连接access数据库(注册页面)详细代码

    在提供的`register.txt`文件中,可能包含了上述代码的一个示例,你可以根据文件内容进一步了解和学习。在实践中,你可能还需要配置数据库连接池,优化数据库操作,以及使用MVC模式来分离视图、控制和模型,提高代码...

    Jsp连接MSSQL2000的两种方法

    安装完毕后,需将三个核心JAR文件(msbase.jar、mssql-server.jar、msutil.jar)拷贝至Tomcat服务器的`common\lib`子目录下,确保服务器能够识别这些驱动文件。 接着,需在系统的环境变量中新增`JDBC_HOME`,其值应...

    strut2.0入门

    - **添加依赖库**:将 Struts 2.0 的 JAR 文件添加到项目的构建路径中。 - **配置 web.xml**:配置过滤器(Filter)`<filter-name>struts2</filter-name>` 和 `<filter-class>org.apache.struts2.dispatcher....

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很...

    springmvc用于方法鉴权的注解拦截器的解决方案代码

    在Spring MVC的配置文件(通常为`*-servlet.xml`)中,我们需要添加`AuthInterceptor`的bean,并且确保`RequestMappingHandlerMapping`和`RequestMappingHandlerAdapter`的配置,以便Spring能够识别和处理我们的注解...

Global site tag (gtag.js) - Google Analytics