invalid end header( bad central directory size)

异常描述

java.util.zip.ZipException: invalid END header (bad central directory size)  at java.util.zip.ZipFile.open(Native Method)  at java.util.zip.ZipFile.<init>(ZipFile.java:219)  at java.util.zip.ZipFile.<init>(ZipFile.java:149)  at java.util.jar.JarFile.<init>(JarFile.java:166)  at java.util.jar.JarFile.<init>(JarFile.java:103)  at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)  

部署war包到tomcat之后,程序无法启动,说是解压错误

问题原因及第一种解决方法

war包文件格式其实就是zip,是需要解压的。而此异常就是解压过程中出现错误。
首先要保证war包完好,跟上传的时候比较一下大小。使用ftp上传有两种格式:文本格式和二进制格式,需要注意一定要选择二进制格式。
如果保证war包完好,可以直接使用unzip haha.war命令进行解压。
tomcat报这个错误说明tomcat无法解压这个文件,但是unzip命令还是可以解压的。解压之后并不报错,web程序正常运行。

另一种解决方法

stackoverflow上说:查找是哪个jar包引起的异常,去本地maven仓库中找到该包对应的文件夹,删除之,重新下载之,重新打包就可以了。

UnsupportedClassVersionError

异常描述

java.lang.UnsupportedClassVersionError: org/apache/solr/client/solrj/SolrServerException : Unsupported major.minor version 51.0

主要原因是jdk的版本太低了,solr4.8以后需要编译在1.7的版本。
在Maven中设置的Java版本只能限制自己的源代码不能使用新版特性,并不能限制jar包。java8生成的jar包有可能无法再java6虚拟机上运行,因为虚拟机也在不停地变化。

ThreadLocal不会自动清空

Servlet容器对于每个请求开辟一个线程处理
Servlet容器维护一个线程池
ThreadLocal不会自动清空它所维护的对象

所以ThreadLocal中的对象有时需要手动清空。

启动tomcat 报错 Unsupported major.minor version 52.0

出现这个错误是因为编译的JDK版本,跟运行时所用的JDK版本不一致所导致的:低版本的jvm无法加载高版本的class文件造成的。
发现这个错误费了好大劲。Tomcat的日志文件重要的有三种:

  • catalina.out
  • catalina.log
  • localhost.log

出现问题之后三个日志对比着看比较好。

No such method error

java.lang.NoSuchMethodError: org.apache.lucene.codecs.blocktree.BlockTreeTermsWriter.validateSettings(II)V

出现此问题的原因多半是因为jar包重复。

以war包形式在tomcat上部署项目时,tomcat会自动解压war包。解压之后会把文件复制到与war包同名的文件夹中,如果该文件夹已经存在,则会合并。会导致意想不到的错误,所以在tomcat上部署项目时一定要先把旧的删掉,再部署新的。

Abstract Method Error

抽象方法错误,意思是调用了抽象方法。
这个错误的原因是:通过string加载某个类,这个类没有找到。
一个项目依赖两个jar包,如果这两个jar包都包含名为haha的包,当加载haha.MyClass时就难以判断去哪一个包下面去找,从而产生找不到类的错误。

intellj idea maven 无效的目标发行版: 1.8

出现此问题,多半是版本问题。
可能的原因如下:
使用maven compile进行编译时报出此错误,这是因为本地JDK是1.7的,不可能编译成目标平台为1.8的代码。maven所调用的javac版本就是PATH环境变量里面的javac。
如果使用IntelliJ,那么可以使用界面maven小窗口编译成功,因为界面方式默认调用的jdk是跟项目相同的。

另一种可能原因是插件版本太低,因为编译的时候需要设置一些参数,所以需要maven编译插件,该插件如果版本太低而编译目标太高,就会报此异常。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.2</version><configuration><source>1.8</source><target>1.8</target><encoding>utf-8</encoding></configuration></plugin>

Java 字符转换大坑

String s = "天下大势";
System.out.println(new String(new String(s.getBytes("utf8"), "gbk").getBytes("gbk"), "utf8"));
System.out.println(new String(new String(s.getBytes("utf8"), "ascii").getBytes("ascii"), "utf8"));

对于utf8编码的字符串s,如果用ascii进行解码,那么得到的错误无法恢复;
对于utf8编码的字符串s,如果用gbk进行解码,那么虽然得到乱码,但是还是能够转换回去的。
如果ascii码根本无法解码字符串s,那么得到的字符串s就是不准确的,即便是转换回去依旧不准确。
如果是gbk编码,虽然无法解码字符串s,但是它依旧可以转换回去。而ASCII则一错不复返了。

转载于:https://www.cnblogs.com/weiyinfu/p/8202469.html

Java Exceptions相关推荐

  1. java exception信息_可能通过Java Exceptions暴露敏感信息?

    当信任边界交叉时,是否可以通过 Java Exceptions公开敏感的应用程序或系统信息? 我的意思是,不仅在理论上,而且如果在真实环境中发生这种情况. 例如java.io.FileNotFound ...

  2. Java:Exceptions相关学习

    文章目录 前言 一.Exceptions简介 二.Exceptions分类 1.异常源 throw 和 catch 2.异常类 Exception 和 Error的区别 3.异常处理 Exceptio ...

  3. 高效的java异常(Effective Java Exceptions)

    摘要 Java开发人员可以做出的最重要的架构决策之一是如何使用Java异常模型.Java异常一直是社区争论的主题. 有些人认为Java语言中的checked(受检)异常是一个失败的实验. 本文认为,错 ...

  4. Exceptions In Java

    Java中的异常分为两种类型:checked Exception和unchecked Exception. Why did the designers decide to force a method ...

  5. Java异常有多慢?

    本文翻译自:How slow are Java exceptions? Question: Is exception handling in Java actually slow? 问题:Java中的 ...

  6. numberformatexception是什么异常_译文《最常见的10种Java异常问题》

    封面:洛小汐 译者:潘潘 知彼知己,方能百战不殆. 前言 本文总结了有关Java异常的十大常见问题. 目录 检查型异常(checked) vs. 非检查型异常(Unchecked) 异常管理的最佳实践 ...

  7. Java异常面试问题

    转载自   Java异常面试问题 1.什么是Java中的异常? 异常是在程序执行期间可能发生的错误事件,并且会中断它的正常流程.异常可能来自不同类型的情况,例如用户输入的错误数据,硬件故障,网络连接故 ...

  8. 最常见的10种Java异常问题!

    封面:洛小汐 译者:潘潘 前言 本文总结了有关Java异常的十大常见问题. 目录 检查型异常(checked) vs. 非检查型异常(Unchecked) 异常管理的最佳实践箴言 为什么在try代码块 ...

  9. 我可以在同一个catch子句中捕获多个Java异常吗?

    本文翻译自:Can I catch multiple Java exceptions in the same catch clause? In Java, I want to do something ...

最新文章

  1. Android事件分发溯源详解
  2. linux java环境变量设置
  3. P4092-[HEOI2016/TJOI2016]树【线段树,倍增】
  4. python中order函数_order by排序
  5. how to add user into sudoers file?
  6. Activiti用户指南之Activiti的API
  7. JDBC结合JSP使用(2)
  8. 《规范敏捷交付:企业级敏捷软件交付的方法与实践》——3.11 观点总结
  9. easyUI跨Tab操作datagrid
  10. 网络安全 —— 对称与非对称加密
  11. jquery on()绑定的点击事件在js动态新添加的元素上无效
  12. 3G模块拨号上网设置
  13. Chrome 改进 Enhanced Safe Browsing 功能,强化扩展程序和文件下载安全性
  14. VS编程,WPF控件增加图片背景的一种方法
  15. SSD1963芯片引脚分布及其功能
  16. 优思学院:ILSSI 的六西格玛黑带大师(MBB)
  17. FFT结果的物理意义(zz)
  18. 基于机器视觉无人平台自主导航避障系统(卓翼智能)
  19. 魔兽会封python_Python爬取大量数据时,如何防止IP被封?
  20. 小傻蛋的妹妹跟随小甲鱼学习Python的第四节004

热门文章

  1. redis为什么内存不宜过大
  2. 【NOIP模拟赛】超级树 DP
  3. bzoj 1858: [Scoi2010]序列操作
  4. 导航栏 UITabBarController等颜色的区别
  5. MySQL实现类似Oracle的序列
  6. mngoDB 常用语法
  7. 使用MesaSQLite入库CSV文件
  8. ORACLE异常(整理网上资料)
  9. 利用Split函数进行多关键字检索
  10. 将两个DataTable合并成一个DataTable