目前打算逐步把以前记录在OneNote上的笔记内容迁移到博客来。
这篇就是2016年在学习期间的笔记,记录了遇到的几个异常以及分析解决。
1. Java.lang.IllegalAccessException: Class org.apache.catalina.core.DefaultInstanceManager can not access a member of class com.m520it.fristServlat.HelloKittyServlet with modifiers ""
检查代码:
当应用程序试图反射性地创建一个实例(而不是数组)、设置或获取一个字段,或者调用一个方法,但当前正在执行的方法无法访问指定类、字段、方法或构造方法的定义时,抛出 IllegalAccessException。
检查代码,发现构造器的修饰符为缺省,即为包访问权限。
解决方案:
将构造器的修饰符设置为public
2. java.io.CharConversionException: Not an ISO 8859-1 character: 下
检查代码:
用于字符转换异常的基类。
检查代码,发现在javax.servlet.ServletOutputStream类的println(String s)方法中调用了自身的print(String s)方法:
而这个print(String s)方法有这样一段代码:
这段代码中对每一个字符都进行了检查,只要有不符合ISO-8859-1的字符就会抛出CharConversionException异常。
解决方案:
使用ServletOutputStream流进行输出时,改用st.write("59下山了".getBytes());输出中文字符串
3. java.lang.ArithmeticException: / by zero
检查代码:
当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。
检查代码,发现进行除法运算时,忽视了除数为零时的错误。
解决方案:
在进行除法运算之前,对除数进行过滤。
4. java.lang.IllegalStateException: Initialization parameters can not be set after the context has been initialized
Initialization parameters can not be set after the context has been initialized
不能设置初始化参数在初始化之后。
文档解释:
在非法或不适当的时间调用方法时产生的信号。换句话说,即 Java 环境或 Java 应用程序没有处于请求操作所要求的适当状态下。
检查代码:
在context初始化之后,对初始化参数进行了设置,这是不允许的。
解决方案:
把setInitParameter()方法去掉。如果要设置初始化参数,应放在注解或者web.xml当中。
Comments | NOTHING