项目部署完毕发布之后
1、404报错 访问资源不存在 http://localhost(:80)/xxx
http://localhost:8080/ 网络地址 localhost = 127.0.0.1
www.baidu.com --> http://220.181.38.149:80/项目名/资源路径
http://localhost:8080/项目名/资源路径 ==
D:\工作\apache\apache-tomcat-8.5.57\webapps\manager\index.jsp
http://220.181.38.149:80/ 通过这些可以找到一个服务器 /项目名/资源路径
项目名/资源路径名
tomcat中WEB-INF文件夹下的内容,是不允许通过项目路径直接访问的;只能在项目内部进行访问;
1.没有权限去访问当前资源,该路径也没有,需要修改为从项目内部进行访问,页面跳转;
2.路径匹配的问题,
修改项目部署的路径名称;
修改当前资源所在的位置;
修改打成的war包中的资源数据的位置;
2、500报错 服务器内部异常
Bug 写代码就写错了
Java中的异常体系
Java中所有异常问题 统称 Throwable
1、Error 错误
不属于程序员所把控的内容; 内存不够(等待GC进行垃圾回收,归还内存空间;直接加内存条) 内存溢出
2、Exception 异常
.java -- javac 编译期异常 --> .class -- java 运行期异常 --> 执行
checkedException 编译期异常
无法将 .java 文件变成 .class 文件
IOException 操作 IO流 Input/Output数据 将数据从xx读取,写到xx地方去
需要提前告知,如果没有这个地址,需要怎么去做;
SQLException 数据库操作 SQL Structured Query Language
需要告知Java,如果这个语法不符合sql的语法,需要怎么去做;
java.lang.ClassNotFoundException 编译期异常
通常在使用反射进行加载类的时候,会出现,这时属于编译期异常;
runtimeException 运行期异常
可以正常通过编译,可以变成一个.class文件,但是不能正常执行;
常见异常:
java.lang.ArithmeticException: 算数相关异常
操作不符合运算的规则;
解决:修改操作的数据,try...catch...解决
java.lang.ArrayIndexOutOfBoundsException: 数组下标越界
获取数组元素,超过了数组本身的长度;
解决:修改数组的长度,修改获取数据的下标数;
java.lang.NullPointerException 空指针异常
java面向对象编程,让一个不存在的对象去干活,导致此异常;
解决:给对象一个具体的内容,让具体内容去干活
java.lang.ClassCastException 类型转换异常
发生在继承关系时,父类向子类转型( 向下转型 );
解决:去掉强转,修改转向的数据类型;
java.lang.InstantiationException 初始化异常
由于提供的构造方法无法进行初始化,没有相应的构造方法;
解决:提供相应的构造方法;
java.lang.IllegalAccessException 非法访问异常
对于不同的包中 被不同修饰符修饰的类,在外部进行访问时,所报的错误;注意要出现在private 缺省 protected中
解决:扩大当前方法的权限修饰符,修改类之间路径;
java.lang.ClassNotFoundException(指定的类不存在)
运行期异常:
没有导入相应jar包,或者导入的jar版本不同,类的使用发生了变化,会出现此异常
解决:导包,百度相应jar包进行下载;
编译期异常:
使用反射进行加载类时出现的;
解决:try..catch解决
java.lang.IllegalArgumentException(方法的参数错误)
例如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的会出现这个异常,如果程序中存在这个异常,就要去检查一下方法调用中的参数传递或参数值是不是有错
RGB(0~255,0~255,0~255);
java.lang.FileNotFoundException(文件未找到异常)
当程序打开一个不存在的文件来进行读写时将会引发该异常。该异常由FileInputStream,FileOutputStream,
RandomAccessFile的构造器声明抛出,即使被操作的文件存在,但是由于某些原因不可访问,比如打开一个只有只读权限的文件并向其中写入数据,以上构造方法依然会引发异常
解决;使用try...catch...
java.lang.ArrayStoreException(数组存储异常)
当试图将类型为不兼容类型的对象存入一个Object[]数组时将引发异常
java.lang.NoSuchMethodException(方法不存在异常)
当程序试图通过反射来创建对象,访问(修改或读取)某个方法,但是该方法不存在就会引发异常。
java.lang.EOFException(文件已结束异常)
当程序在输入的过程中遇到文件或流的结尾时,引发异常。因此该异常用于检查是否达到文件或流的结尾
java.lang.InterruptedException(被中止异常)
当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。
java.lang.CloneNotSupportedException (不支持克隆异常)
当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常
java.lang.OutOfMemoryException (内存不足错误)
当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误
java.lang.NoClassDefFoundException (未找到类定义错误)
当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误
异常的处理
try...catch... 捕获异常
if( boolean ){...}else{...} 只会执行一个代码块
try{
先执行1;
先执行2;
}catch( 异常类型 ){
其他操作;
}finally{
不管有没异常都会执行; 最后执行
}
最多会执行两个代码块中的内容
throws抛出异常
后面跟 异常类型 ,放在方法的参数后面 ( )thorws RuntimeException, xxx2 { }
可以抛出多个异常,每个异常之间使用 , 隔开;
thorw抛出异常
后面跟异常对象,放在方法体内,相当于return;
throw new RuntimeException(); 后面不能跟任何内容;