[java] Tomcat 启动失败 Error: error while reading constant pool for .class: unexpected tag at #
表现
公司服务器今天启动tomcat失败,
看catalina.out文件里面报错 java.lang.ClassFormatError: Unknown constant tag 101 in class file cn/world/data
尝试解决
查了一下,网上一般认为是字符串的问题,但是代码文件目标行是英文字符串,只是简单的println了字符串,应该不会有问题。尤其是这些代码都没变动过。
之后考虑了一下class文件可能损坏的可能,https://www.java-forum.org/thema/kein-zugriff-auf-inhalt-einer-referenzierten-jar.131247/ 中提到某些版本ant可能会复制过程中出错。
所以检查webapps和build目录的class文件md5,发现是一样的。可能不是这个问题。
之后又看到了一个帖子知道了javap命令可以反汇编(此处用来验证class是否损坏),此时发现问题,javap data命令得到了一个错误,Error: error while reading constant pool for data.class: unqxpected tag at #171: 109
这表示这个class文件大概率是有问题的,并且指明了代码行数,还是错误的println那一行。
根据提示,可能是字符常量池出了问题,但是代码确实没有问题这点可以确定
尝试注释掉这行println,ant编译部署,发现问题解决了!
之后再取消注释,编译部署,代码也没问题了!
此时关注了一下编译前后class文件大小,出问题的大小由10640字节,没问题的class文件有9568字节,想来应该是class文件坏掉了。只是正好坏到了字符常量池里面。
原因
问题怎么产生的想不到,可能是复制过程中程序出了问题,又或者是硬盘出现了坏块导致数据坏掉了。
猜测ant只会编译变动过的代码文件,如果编译完成后class文件坏掉了,代码文件又没有修改,那么这个坏掉的class文件会被保留,并不会被覆盖掉,所以直接ant编译部署不好用。
tomcat 6.0.18
jdk 1.7.0_51
ant 1.9.3
Centos6.4
[java] Tomcat 启动失败 Error: error while reading constant pool for .class: unexpected tag at #的更多相关文章
- Java tomcat启动失败(Servlet3.0 Web Project):A child container failed during start
Tomcat启动失败,失败全部信息: 五月 , :: 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetProper ...
- Java Tomcat 启动失败的解决思路
好久没写新博文了,离自己要求的每年几篇的目标也是渐行渐远. 最近在学习Java,也是从基础学习,因为我是一个.net开发人员,所以学习的成本相对低些.Java JDK,JRE,Tomact 的安装及配 ...
- Tomcat启动失败:java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager
项目开发中发现服务器上Tomcat启动失败 开始定位 第一步:打开tomcat日志catalina.log: 2017-07-25 17:02:43,799 [Catalina-startStop-1 ...
- tomcat启动出现异常 Error filterStart
tomcat启动中出现 Error filterStart异常, 没有任何堆栈信息,如下: SEVERE: Error filterStart Jul 6, 2012 3:39:05 PM org.a ...
- Tomcat启动失败问题解决
1. 系统框架加载正常,但是Tomcat启动失败,报错如下: 2013-7-26 17:18:33 org.apache.catalina.core.StandardContext startInte ...
- tomcat启动失败的解决办法
初次安装tomcat启动失败的解决办法: 1.CATALINA_HOME C:\Program Files\apache-tomcat-8.5.242.path %CATALINA_HOME% ...
- tomcat启动失败问题排除及解决办法 Server Tomcat v7.0 Server at localhost failed to start.
tomcat启动失败问题排除及解决办法 Server Tomcat v7.0 Server at localhost failed to start. 导致上面问题的原因可能有很多种,每种的解决办法都 ...
- tomcat 启动失败 和闪退 和 启动成功却没有页面显示
1.解压版tomcat 将tomcat解压至英文目录下, 在系统环境变量里面配置 JAVA_HOME 和CATALINA_HOME (就是tomcat的安装目录) 在path中配置 %CATALINA ...
- tomcat启动失败的三种方法
Tomcat启动失败的解决办法 1. 重复映射 用eclipse开发时,用Eclipse开发,新建了的servlet会有一个url-pattern声明: 这样就不需要再在web.xml中添加映射,如果 ...
- Tomcat启动失败原因
Tomcat启动失败原因 一.Tomcat启动时,要求被加载的项目必须拥有独立路径名称 发布的两个工程具有相同路径名称,这是不允许. 二.8080端口号已经被占用了 启动失败原因,就是8085端口上, ...
随机推荐
- docker容器中部署 kafka 和 elk
1.下载zookeeper docker pull wurstmeister/zookeeper 2.下载kafka docker pull wurstmeister/kafka:2.11-0.11. ...
- 手撕Vue-数据驱动界面改变中
经过上一篇的介绍,已经实现了观察者模式的基本内容,接下来要完成的就是将上一篇的发布订阅模式运用到 Nue 中,实现数据驱动界面改变. 在监听数据变化的章节当中,根据指定的区域和数据去编译渲染界面 这个 ...
- Docker 安装 MySQL8 数据库
创建数据卷 mkdir -p /usr/mysql/conf /usr/mysql/data chmod -R 755 /usr/mysql/ 创建配置文件 vim /usr/mysql/conf/m ...
- go中context源码解读
context 前言 什么是context 为什么需要context呢 context底层设计 context的实现 几种context emptyCtx cancelCtx timerCtx val ...
- 大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍
大语言模型的预训练[1]:基本概念原理.神经网络的语言模型.Transformer模型原理详解.Bert模型原理介绍 1.大语言模型的预训练 1.LLM预训练的基本概念 预训练属于迁移学习的范畴.现有 ...
- 【三】gym简单画图、快来上手入门吧,超级简单!
相关文章: [一]gym环境安装以及安装遇到的错误解决 [二]gym初次入门一学就会-简明教程 [三]gym简单画图 [四]gym搭建自己的环境,全网最详细版本,3分钟你就学会了! [五]gym搭建自 ...
- 【6】VScode 无法在终端输入问题,提示:无法在只读编辑器中编辑
相关文章: [1]VScode中文界面方法-------超简单教程 [2]VScode搭建python和tensorflow环境 [3]VSCode 主题设置推荐,自定义配色方案,修改注释高亮颜色 [ ...
- 算法与数据结构-07-手写类HashTable
package day05; import java.sql.SQLOutput; import java.util.Scanner; /** * 哈希表代码实现 */ public class Ha ...
- idea2018 破解
本人使用的是idea2018.1.11,对2018其它版本的应该都是管用的 idea2018-1.11 下载地址 链接:https://pan.baidu.com/s/1_RlJGZtfMxr1Nx9 ...
- 教你用JavaScript获取大转盘
案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个大转盘.当你难以抉择的时候不妨用这个案例来帮你做选择.通过编程实战我们可以学到按钮的 ...