Java程序调试与错误排查:非代码问题解析
"Java程序调试与错误收集--非代码引起的报错" 在Java开发过程中,错误并不仅限于代码层面的问题,有时是由于环境配置或依赖库不正确导致的。本文将探讨一些非代码引起的常见报错,帮助Java初学者更好地理解和解决这些问题。 1. Java运行环境问题: - JAR文件冲突:当多个JAR文件包含相同类时,如果没有正确管理类加载器,可能会引发异常。确保在项目中删除或排除不必要的JAR文件,避免类加载冲突。 - 版本不兼容:遇到`java.lang.UnsupportedClassVersionError: Bad version number in .class file`错误,通常是由于编译使用的JDK版本高于运行环境的JDK版本。检查并确保MyEclipse(或其他IDE)的项目设置中,编译器合规级别与运行环境的JDK版本一致。 2. Web应用程序部署问题: - 缺失或错误的配置:如果在部署Web应用时遇到`org.apache.jasper.JasperException: The absolute URI: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application`,这意味着Web应用无法找到JSTL库。确保JSTL相关的JAR文件已正确放入`WEB-INF/lib`目录,并在JSP页面中使用`<%@taglib>`正确引用。同时,检查`web.xml`配置文件,确保`<taglib>`元素指定了正确的TLD(Tag Library Descriptor)位置。 3. 依赖库管理: - TLD(Tag Library Descriptor)缺失:JSP标签库的定义通常在TLD文件中。当JSP页面引用的TLD在`web.xml`或部署的JAR文件中找不到时,会抛出异常。例如,`fmt.tld`, `c.tld`等JSTL核心库的TLD文件需要在`/WEB-INF/tlds`目录下存在,并在`web.xml`中正确声明。 4. 解决方案: - 对于JAR文件冲突,可以使用Maven或Gradle等构建工具来管理依赖,它们会自动处理版本冲突和依赖树。 - 遇到版本不兼容问题,应确保开发环境和生产环境使用相同或兼容的JDK版本。 - 如果是Web应用部署问题,检查`web.xml`配置是否完整无误,确保所有必要的库文件都已部署,并且类路径设置正确。 - 保持项目结构清晰,遵循标准的Maven或IDE推荐的目录结构,以减少配置错误。 以上是针对Java程序调试和非代码错误的一些常见情况及解决方案。通过理解这些错误的根本原因,开发者可以更有效地定位问题,从而提高开发效率和软件质量。在实践中,不断学习和积累经验是解决这类问题的关键。
1.Web程序的调试与排错:
(1).非代码引起的报错
①.jar包引起的错误:当从版本控制器上下载项目时,如果项目报错但是所有类文件和配置文件和所有手动建的包都没有报错的情况时是因为项目中的jar包有错,修改或删
除jar包即可
②.编译器版本不合报错:当启动服务器或部署项目时控制台打印有:* java.lang.UnsupportedClassVersionError:Bad version number in .class file的异常语句时是因
为当前MyEclipse使用的jdk版本和项目创建时的jdk版本不合而引起的,进入MyEclipse>Window>Preferences>点击弹出的对话框左边的树形菜单中的"Java"项下的Comp
iler项>点右边显示框中Compiler compliance level:右边的下拉列表并选择和创建项目时的jdk版本相同的jdk版本号>点击右下角的"Apply"按钮>点击击右下角的"Ok
"按钮即可
③.当控制台或页面上打印org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml o
r the jar files deployed with this application的异常语句时,是因为缺少jar包或jar包版本不对或web.xml配置问题
方法一:在工程中导入JSTL jar包后(把*.jar和*.tld放到/WEB-INF/lib目录下)在JSP页面中导入<%@ taglib uri="/WEB-INF/lib/c.tld" prefix="c"%>
方法二:修改web.xml(加上下面语句)<jsp-config>
<taglib><taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri><taglib-location>/WEB-INF/tlds/fmt.tld</taglib-location></taglib>
<taglib><taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri><taglib-location>/WEB-INF/tlds/fmt-rt.tld</taglib-location></taglib>
<taglib><taglib-uri>http://java.sun.com/jstl/core</taglib-uri><taglib-location>/WEB-INF/tlds/c.tld</taglib-location></taglib>
<taglib><taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri><taglib-location>/WEB-INF/tlds/c-rt.tld</taglib-location></taglib>
<taglib><taglib-uri>http://java.sun.com/jstl/sql</taglib-uri><taglib-location>/WEB-INF/tlds/sql.tld</taglib-location></taglib>
<taglib><taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri><taglib-location>/WEB-INF/tlds/sql-rt.tld</taglib-location></taglib>
<taglib><taglib-uri>http://java.sun.com/jstl/x</taglib-uri><taglib-location>/WEB-INF/tlds/x.tld</taglib-location></taglib>
<taglib><taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri><taglib-location>/WEB-INF/tlds/x-rt.tld</taglib-location></taglib>
</jsp-config>再在JSP文件中导入<%@ taglib uri="/WEB-INF/lib/c.tld" prefix="c"%>
④.当代码、配置文件和路径都没有错时,但是它总是报以前的错或不出效果,是因为服务器中任然还 残留 以前的代码,将服务器中的项目彻底删除后重新部署即可
⑤.当两个页面同时访问同一个资源时(),如果代码完全一样但一个可以访问另一个却不能访问(报404错)时,可能是因为另一个页面中有以下代码:<%String path=request
.getContextPath();String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%> <base href="<%=basePa
th%>"> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page">
⑥.当访问页面时,如果确认路径和页面都存在却报404错误,关闭服务器再启动试一试(重启编译器不行),或将项目从服务器上和编译器上删除,重新导入另外备份的同一项
目并重新部署,如果重新部署后报错,则是xml文件配置错误,如果不重新部署后不报错即可
⑦.404错误解决:当程序出现404路径错误时,如果实在找不到有什么错误,就用鼠标放到要找的超连接上,再看浏览器最下面的状态栏的路径是否和当前文件的路进相对
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 2
- 资源: 54
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 51单片机驱动DS1302时钟与LCD1602液晶屏万年历设计
- React 0.14.6版本源码分析与组件实践
- ChatGPT技术解读与应用分析白皮书
- 米-10直升机3D模型图纸下载-3DM格式
- Tsd Music Box v3.02:全面技术项目源码资源包
- 图像隐写技术:小波变换与SVD数字水印的Matlab实现
- PHP图片上传类源码教程及资源下载
- 掌握图像压缩技术:Matlab实现奇异值分解SVD
- Matlab万用表识别数字仪表教程及源码分享
- 三栏科技博客WordPress模板及丰富技术项目源码资源下载
- 【Matlab】图像隐写技术的改进LSB方法源码教程
- 响应式网站模板系列:右侧多级滑动式HTML5模板
- POCS算法超分辨率图像重建Matlab源码教程
- 基于Proteus的51单片机PWM波频率与占空比调整
- 易捷域名查询系统源码分享与学习交流平台
- 图像隐写术:Matlab实现SVD数字水印技术及其源码