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则一错不复返了。

Java Exceptions的更多相关文章

  1. Some Java exceptions, messages and errors.

    http://www.antapex.org/messages_java.txt http://www.jvmmonitor.org/index.html

  2. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十二)之Error Handling with Exceptions

    The ideal time to catch an error is at compile time, before you even try to run the program. However ...

  3. Thinking in Java——笔记(12)

    Error Handling with Exceptions The ideal time to catch an error is at compile time, before you even ...

  4. java异常处理的设计

    有一句这样话:一个衡量Java设计师水平和开发团队纪律性的好方法就是读读他们应用程序里的异常处理代码. 本文主要讨论开发Java程序时,如何设计异常处理的代码,如何时抛异常,捕获到了怎么处理,而不是讲 ...

  5. 面试准备(三) Java 异常类层次结构

    在Java中,异常分为受检查的异常,与运行时异常. 两者都在异常类层次结构中.这类容易出选择题 考试你是否掌握了异常类并清楚哪些异常类必须捕获 下面的图展示了Java异常类的继承关系. 图1 粉红色的 ...

  6. JAVA fundamentals of exception handling mechanism

    Agenda Three Categories Of Exceptions Exceptions Hierarchy try-catch-finally block The try-with-reso ...

  7. thinking in java Generics Latent typing

    The beginning of this chapter introduced the idea of writing code that can be applied as generally a ...

  8. Top 10 Questions about Java Exceptions--reference

    reference from:http://www.programcreek.com/2013/10/top-10-questions-about-java-exceptions/ This arti ...

  9. java url demo

    // File Name : URLDemo.java import java.net.*; import java.io.*; public class URLDemo { public stati ...

随机推荐

  1. javascript 的面向对象特性参考

    最近在看用javascript+css实现rich client.javascript 也是一个蛮有意思的语言.特别是其面向对象的实现和其他“标准”的OO launguage有很大的不同.但是,都是动 ...

  2. java判断一个字符串是否包含某个字符

    一.contains方法 1:描述 java.lang.String.contains() 方法返回true,当且仅当此字符串包含指定的char值序列 2:声明 public boolean cont ...

  3. ofstream的使用方法--超级精细。C++文件写入、读出函数(转)

    ofstream的使用方法ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;  在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的, ...

  4. Ios开发之Category

    Category是在不改变已存在类的情况下,对其添加方法来达到对类进行功能扩展的目的. 对类功能进行拓展的时候,我们会有多种方式,比如说可以通过继承也可以进行功能扩展,但是在Category和继承上我 ...

  5. ES8新特性——ES8 was Released and here are its Main New Features

    原文: https://hackernoon.com/es8-was-released-and-here-are-its-main-new-features-ee9c394adf66 -------- ...

  6. (转)Unity3D研究院之IOS&Android收集Log文件

    转自:http://www.xuanyusong.com/archives/2477 有段时间没有写过文章了,不知道大伙儿还记得雨松MOMO吗? 嘿嘿. 开发项目的时候尤其在处理与服务器交互这块,如果 ...

  7. oauth2-server-php-docs 授权类型

    授权码 概观 在Authorization Code交付式时使用的客户端想要请求访问受保护资源代表其他用户(即第三方).这是最常与OAuth关联的授予类型. 详细了解授权码 用例 代表第三方来电 履行 ...

  8. robot framework + python实现http接口自动化测试框架

    https://www.jianshu.com/p/6d1e8cb90e7d 前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测 ...

  9. python2x与3x下使用urlretrieve下载文件

    1.python2x下urlretrieve方法: 直接将远程数据下载到本地. urllib.urlretrieve(url[, filename[, reporthook[, data]]]) 参数 ...

  10. 翻页效果实现turn.js

    使用插件turn.js实现翻书功能. 看下效果:http://yk.wanxue.cn/2019/01/yd/ 当然第一版做的时候加载很慢很慢,原版插件会把所有图片加载出来再显示页面.很不爽的体验就改 ...