Java程序调试与错误收集--代码引起的报错
### Java程序调试与错误收集——代码引起的报错 在Java开发过程中,经常会出现各种各样的错误,这些错误可能来源于语法、逻辑或者配置等方面。对于初级程序员来说,掌握基本的调试技巧和错误处理方法是非常重要的。本文将根据提供的部分文档内容,详细介绍在Java编程中常见的错误类型及其解决方案。 #### 一、编码问题 **描述:** 在处理中文或特殊字符时,如果页面或平台没有设置正确的编码方式(如未设置JSP页面的pageEncoding为utf-8),可能会导致乱码或信息显示不全的问题。 **解决办法:** - 设置JSP页面的`pageEncoding`属性为`utf-8`。 - 确保服务器端和客户端的编码一致。 #### 二、文件路径问题 **描述:** 文件路径错误是常见的问题之一,特别是在使用JSP页面时,路径问题可能导致资源无法正确加载。 **解决办法:** - 检查所有文件路径是否正确无误。 - 对于JSP页面中的标签库路径,确保它们指向正确的文件位置。 - 清理`webapps`目录下的临时文件和缓存,避免旧版本文件的影响。 #### 三、JavaBean的使用 **描述:** JavaBean是一种标准的Java对象,用于封装数据。不当使用JavaBean会导致数据无法正确传递或读取。 **解决办法:** - 确认JavaBean的属性是否正确设置,包括getter和setter方法。 - 在DAO层和服务层正确地使用JavaBean来获取或设置值。 - 检查JSP页面上的EL表达式是否正确,确保使用了正确的属性名和方法调用。 #### 四、预览效果不一致 **描述:** 在预览阶段发现实际效果与预期不符,这可能是由于页面代码错误或者状态信息不一致导致的。 **解决办法:** - 仔细检查HTML和CSS代码,确保格式正确且符合预期。 - 确认服务器端返回的状态信息与前端展示的信息相匹配。 #### 五、EL表达式问题 **描述:** 使用EL表达式从JavaBean获取值时,如果表达式写法错误,会导致值无法正确显示。 **解决办法:** - 确保使用了正确的EL标签,例如`<c:forEach>`。 - 检查JavaBean的属性名是否正确,并且已经正确地设置了getter和setter方法。 - EL表达式应正确引用JavaBean的属性,例如`${list}`而不是`list`。 #### 六、类冲突 **描述:** 当Java源文件中定义了一个与导入包中同名类型的类时,会出现冲突。 **解决办法:** - 重命名类,避免与已导入的包中类型名称相同。 - 使用完全限定名来指定类。 #### 七、类找不到异常 **描述:** 当试图加载一个不存在的类时,会抛出`ClassNotFoundException`。 **解决办法:** - 确认类的全限定名是否正确。 - 检查`web.xml`文件中的Servlet配置是否正确,确保Servlet被正确注册并映射到相应的URL。 - 如果问题仍然存在,尝试清理项目,重新编译所有源文件。 #### 八、文件上传问题 **描述:** 在处理文件上传时,如果没有正确设置表单提交类型,可能会导致文件无法上传。 **解决办法:** - 确保表单的`enctype`属性设置为`multipart/form-data`。 - 检查服务器端代码中处理文件上传的部分,确保正确解析请求参数。 #### 九、跨域问题 **描述:** 在尝试访问不同域名下的资源时,浏览器可能会阻止该请求,从而导致“取地址”异常。 **解决办法:** - 在服务器端设置CORS支持,允许特定或所有域名进行跨域访问。 - 检查服务器配置文件,确保允许跨域请求。 #### 十、数据库连接问题 **描述:** 当数据库连接失败时,会出现`SQLServerException`。 **解决办法:** - 检查数据库服务是否正常运行,特别是监听端口是否打开。 - 配置数据库连接字符串,确保包含正确的IP地址和端口号。 - 确认数据库用户权限是否足够。 #### 十一、EL属性未找到 **描述:** 使用EL表达式访问对象属性时,如果该属性不存在,则会抛出`PropertyNotFoundException`。 **解决办法:** - 确认对象中是否存在指定的属性。 - 确认EL表达式的写法是否正确。 #### 十二、页面跳转问题 **描述:** 使用`<jsp:forward>`进行页面跳转时,如果目标页面不存在或已被删除,则会导致跳转失败。 **解决办法:** - 确认目标页面的路径是否正确。 - 确认页面是否存在且未被删除。 #### 十三、安全异常 **描述:** 当类签名与其他类不匹配时,会抛出`SecurityException`。 **解决办法:** - 确认类签名是否一致。 - 检查构建过程,确保所有类都被正确编译。 #### 十四、无效对象名称 **描述:** 访问数据库表或视图时,如果表名或视图名不存在,则会抛出`SQLServerException`。 **解决办法:** - 确认数据库中的表名或视图名是否正确。 - 检查SQL语句中的表名或视图名拼写是否正确。 #### 十五、编译错误 **描述:** 当Java源代码存在语法错误或其他编译问题时,会导致编译失败。 **解决办法:** - 仔细检查代码中的语法错误。 - 确认所有依赖项都已正确导入。 #### 十六、类型转换异常 **描述:** 尝试将一个对象强制转换为另一个类型时,如果类型不兼容,则会抛出`ClassCastException`。 **解决办法:** - 确认类型转换前后的对象类型是否兼容。 - 使用条件判断语句来避免非法的类型转换操作。 通过以上对常见错误的分析和解决方法的介绍,希望能帮助初级程序员更好地理解Java程序调试与错误收集的重要性,并能够有效地解决问题。在实际开发过程中,建议开发者养成良好的编程习惯,及时记录和排查错误,这对于提高程序质量和开发效率至关重要。
(2).代码错误导致的错
①.当页面/控制台报错时(没有遇到过的错/看不懂的错),先看错误信息中的错误信息来源于哪个类/方法/哪行代码,在根据那行代码多试几中方法
②.保存时发生的错误:当jsp文件中的内容改变,要保存的时候,要先把第一行的pageEncoding属性值设置为utf-8,否则将报错不能保存
③.启动服务器报错,可能的错误有:配置文件有错,也可能是JSP页面中的标签有错(此时它不一定报正在使用的程序的错,有可能报其他程序的错),可以在服务器的webapps
目录下把标签有错的项目删除
④.JavaBean引起的错误:
JavaBean的属性名首字母必须小写,否则即使再dao层、server层和servlet中可以取得其中的值,在Jsp页面中无论用什么方法都不能取得
⑤.当不出现预想的效果时,如果确认不是浏览器缓存所致,但又找不出错误和原因并浏览器状态栏左边出现有"网页上有错误"的消息时,双击此消息>单击弹出框中的"显示
详细信息"按钮查看错误(其中的"行"和"错误"说明了错误的位置和原因)
⑥.当在jsp页面中用<c:foreach>和EL表达式不能取到值时,应当首先检查是否导入c:标签库,再检查JavaBean的所有属性名首字母是否是小写
⑦.当导入一个包报错时,如果包名确认无误且当鼠标放在包名上提示The import java.... conflicts with a type defined in the same file时,表示声明的类名和导入
的包名冲突
⑧.当控制台出现有java.lang.ClassNotFoundException:的错误时,说明项目找不到Servlet,可能是web.xml中没有配置或配置错误,如果确认配置没有错但仍然报此错误时
,就把web.xml中对应的Servlet的节点删除,同时也把对应的Servlet删除重新新建
⑨.当一个jsp页面要有上传的功能时,要在form表单中加一个enctype="multipart/form-data"属性,但是在jsp页面的form表单中加了该属性后,该表单中的所有控件(包括
隐藏表单域)的值在servlet中不能用一般的方法获得,必须加判断那些是普通控件那些是上传文件的控件,再用别的方法获取,所以这时用作传参数的隐藏表单中的参数
必须加在form表单的action属性中来传递,其方法是:action="servlet?name=value"(即:这时隐藏表单必须用action代替),这时在servlet中才能用一般的获取值的方法
获取jsp页面传来的值
⑩.当一个jsp页面跳到servlet后又经过servle逃到另一个jsp页面,页面出现乱码时,是因为没有在servlet中设置请求流和相应流的编码方式,response.setContentType(
"text/html;charset=utf-8");request.setCharacterEncoding("utf-8");
11.当控制台出现有"...将截取字符串错误..."的错误时,是因为数据库相应字段的数据长度不够
12.当访问任意一个页面都出现404错误时或当启动Tomcat服务器在控制台打印相关报错语句时,可能是因为web.xml或其他xml配置文件配置错误也可能是因为导入的jar包
冲突.
13.当控制台出现有com.microsoft.sqlserver.jdbc.SQLServerException:到主机的TCP/IP连接失败。java.net.ConnectException:Connection refused:connect的错误时
,可能是因为数据库的端口号不对,打开SQL Server配置管理器中的SQL Server 2005网络配置中的SQLEXPRESS的协议的TCP/IP中的IP地址项中的所有TCP端口都设置对,
并将其中的活动和已启用项设为是/yes和协议项中的全部侦听、无延迟、已启用都设为是/yes,再重新启动SQL Server 2005服务中的SQL Server(SQLEXPRESS)即可
14.当从servlet或Action跳到一个查询或修改的页面时,如果报500错误并在控制台打印javax.el.PropertyNotFoundException:Property 'PropertyName' not found on
type ...,可能是因为目标页面中的<c:forEach>的items的值写成了直接用""引起的字符串,items的""中应该用EL取值,即应该是items="${List或Object}",或者是EL中
的对象/属性名和javaBean中的不同(应仔细检查)
- 林贵志2014-06-07写的东西都太专业化了,像我这种小白也看不懂…
- Lycheeay2013-10-11虽然没有解决我的错误 但是还不错
- 粉丝: 2
- 资源: 54
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于ssh员工管理系统
- 5G SRM815模组原理框图.jpg
- T型3电平逆变器,lcl滤波器滤波器参数计算,半导体损耗计算,逆变电感参数设计损耗计算 mathcad格式输出,方便修改 同时支持plecs损耗仿真,基于plecs的闭环仿真,电压外环,电流内环
- 毒舌(解锁版).apk
- 显示HEX、S19、Bin、VBF等其他汽车制造商特定的文件格式
- 操作系统实验 Ucore lab5
- 8bit逐次逼近型SAR ADC电路设计成品 入门时期的第三款sarADC,适合新手学习等 包括电路文件和详细设计文档 smic0.18工艺,单端结构,3.3V供电 整体采样率500k,可实现基
- 操作系统实验 ucorelab4内核线程管理
- 脉冲注入法,持续注入,启动低速运行过程中注入,电感法,ipd,力矩保持,无霍尔无感方案,媲美有霍尔效果 bldc控制器方案,无刷电机 提供源码,原理图
- Matlab Simulink#直驱永磁风电机组并网仿真模型 基于永磁直驱式风机并网仿真模型 采用背靠背双PWM变流器,先整流,再逆变 不仅实现电机侧的有功、无功功率的解耦控制和转速调节,而且能实