Java Exceptions
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的更多相关文章
- Some Java exceptions, messages and errors.
http://www.antapex.org/messages_java.txt http://www.jvmmonitor.org/index.html
- 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 ...
- Thinking in Java——笔记(12)
Error Handling with Exceptions The ideal time to catch an error is at compile time, before you even ...
- java异常处理的设计
有一句这样话:一个衡量Java设计师水平和开发团队纪律性的好方法就是读读他们应用程序里的异常处理代码. 本文主要讨论开发Java程序时,如何设计异常处理的代码,如何时抛异常,捕获到了怎么处理,而不是讲 ...
- 面试准备(三) Java 异常类层次结构
在Java中,异常分为受检查的异常,与运行时异常. 两者都在异常类层次结构中.这类容易出选择题 考试你是否掌握了异常类并清楚哪些异常类必须捕获 下面的图展示了Java异常类的继承关系. 图1 粉红色的 ...
- JAVA fundamentals of exception handling mechanism
Agenda Three Categories Of Exceptions Exceptions Hierarchy try-catch-finally block The try-with-reso ...
- thinking in java Generics Latent typing
The beginning of this chapter introduced the idea of writing code that can be applied as generally a ...
- Top 10 Questions about Java Exceptions--reference
reference from:http://www.programcreek.com/2013/10/top-10-questions-about-java-exceptions/ This arti ...
- java url demo
// File Name : URLDemo.java import java.net.*; import java.io.*; public class URLDemo { public stati ...
随机推荐
- 在UTF-8中,一个汉字为什么需要三个字节?(转)
http://www.cnblogs.com/web21/p/6092414.html UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序.有关Unicod ...
- Spark:JavaRDD 转化为 Dataset<Row>的两种方案
JavaRDD 转化为 Dataset<Row>方案一: 实体类作为schema定义规范,使用反射,实现JavaRDD转化为Dataset<Row> Student.java实 ...
- linux ps 命令的查看
linux ps 命令的结果中VSZ,RSS,STAT的含义和大小 ps是linux系统的进程管理工具,相当于windows中的资源管理器的一部分功能. 一般来说,ps aux命令执行结果的几个列的信 ...
- js的技巧
字典: if(tac["detail"][sid] || tac["detail"][sid]==0) //判断某项是否存在,0为真 tac["det ...
- DOM对象操作html元素1
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 【js】js中字典长度该如何取得
不能直接使用length属性,而要遍历累计,程序如下: var dic={'name':'alice','age':'45','sn':'9876',}; console.log("dic ...
- 坑人无数的Redis面试题
https://baijiahao.baidu.com/s?id=1588454565071211950&wfr=spider&for=pc 坑人无数的Redis面试题
- 生日日期联动选择birthday.js
实例下载
- vsphere产品下载列表
https://my.vmware.com/cn/web/vmware/info/slug/datacenter_cloud_infrastructure/vmware_vsphere_with_op ...
- 磁盘I/O的性能评估方法
磁盘I/O的性能评估方法 http://blog.synology.com/blog/?p=2086 通常,我们很容易观察到数据库服务器的内存和CPU压力.但是对I/O压力没有直观的判断方法.磁盘有两 ...