[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端口上, ...
随机推荐
- vue基础系列文章12---创建脚手架
一.交互式命令行创建 1.运行 vue create myvue 选择默认创建模式,会在指定的文件夹下创建文件 2.进入到myvue文件夹,运行:npm run serve 3.访问本地的地址就可以 ...
- kettle系统列文章03---如何建立一个作业
上篇文章我们建立好了转换,我们希望这个转换可以做成定时任务,每一分钟执行一次 第一步:创建作业开始节点:文件---->新建---->作业----核心对象---->通用-----> ...
- gpedit.msc 打不开
win10系统推出已有不短的时间了,朋友们也纷纷升级了win10系统,但是暴露的问题也是越来越多,比如win10系统打开运行输入gpedit.msc命令时却提示找不到文件.那出现win10打不开gpe ...
- Windows 10 关闭搜索栏中“热门搜索”的显示。
Windows 10 关闭搜索栏中"热门搜索"的显示. 任务栏取消"显示搜索突出显示"的设置可能无法取消"热门搜索"的显示, 这就需要您尝试 ...
- 解决VS选择运行“在证书存储区中找不到清单签名证书”
转:https://www.cnblogs.com/190196539/archive/2011/12/03/2272861.html 解决"在证书存储区中找不到清单签名证书" ...
- 5.1 Windows驱动开发:判断驱动加载状态
在驱动开发中我们有时需要得到驱动自身是否被加载成功的状态,这个功能看似没啥用实际上在某些特殊场景中还是需要的,如下代码实现了判断当前驱动是否加载成功,如果加载成功, 则输出该驱动的详细路径信息. 该功 ...
- 8.5 Windows驱动开发:内核注册表增删改查
注册表是Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息,注册表是一个巨大的树形结构,无论在应用层还是内核层操作注册表都有独立的API函数可以使用,而在内核中读写注册表则需要使用内 ...
- git操作 手写稿
- 简单总结Tomcat/SpringMVC/Spring/SpringBoot的关系
Tomcat是一个Web应用服务器,可以作为Servlet容器.它的作用是,解析客户端client发起的request,并组装出HttpRequest.创建HttpResponse,将二者交于内部的H ...
- 如何快速提高英飞凌单片机编译器 TASKING TriCore Eclipse IDE 编译速度
1.前言 使用英飞凌单片机编译器 TASKING TriCore Eclipse IDE 开发编译时,想必感受最深刻的就是编译速度,那是非常慢了,如果是部分修改的源文件编译还好,不用等太久,而如果选择 ...