程序调试错误收集.doc_第1页
程序调试错误收集.doc_第2页
程序调试错误收集.doc_第3页
程序调试错误收集.doc_第4页
程序调试错误收集.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一.Java程序调试与错误收集 1.Web程序的调试与排错:尽量使用System.out.println();和打印hql语句的方式跟踪查错 (1).非代码引起的报错 .jar包引起的错误:当从版本控制器上下载项目时,如果项目报错但是所有类文件和配置文件和所有手动建的包都没有报错的情况时是因为项目中的jar包有错,修改或删 除jar包即可 .编译器版本不合报错:当启动服务器或部署项目时控制台打印有:* java.lang.UnsupportedClassVersionError:Bad version number in .class file的异常语句时是因 为当前MyEclipse使用的jdk版本和项目创建时的jdk版本不合而引起的,进入MyEclipseWindowPreferences点击弹出的对话框左边的树形菜单中的Java项下的Comp iler项点右边显示框中Compiler compliance level:右边的下拉列表并选择和创建项目时的jdk版本相同的jdk版本号点击右下角的Apply按钮点击击右下角的Ok 按钮即可 .当控制台或页面上打印org.apache.jasper.JasperException: The absolute uri: /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页面中导入 方法二:修改web.xml(加上下面语句) /jstl/fmt/WEB-INF/tlds/fmt.tld /jstl/fmt-rt/WEB-INF/tlds/fmt-rt.tld /jstl/core/WEB-INF/tlds/c.tld /jstl/core-rt/WEB-INF/tlds/c-rt.tld /jstl/sql/WEB-INF/tlds/sql.tld /jstl/sql-rt/WEB-INF/tlds/sql-rt.tld /jstl/x/WEB-INF/tlds/x.tld /jstl/x-rt/WEB-INF/tlds/x-rt.tld 再在JSP文件中导入 .当代码、配置文件和路径都没有错时,但是它总是报以前的错或不出效果,是因为服务器中任然还 残留 以前的代码,将服务器中的项目彻底删除后重新部署即可 .当两个页面同时访问同一个资源时(),如果代码完全一样但一个可以访问另一个却不能访问(报404错)时,可能是因为另一个页面中有以下代码: base href= .当访问页面时,如果确认路径和页面都存在却报404错误,关闭服务器再启动试一试(重启编译器不行),或将项目从服务器上和编译器上删除,重新导入另外备份的同一项 目并重新部署,如果重新部署后报错,则是xml文件配置错误,如果不重新部署后不报错即可 .404错误解决:当程序出现404路径错误时,如果实在找不到有什么错误,就用鼠标放到要找的超连接上,再看浏览器最下面的状态栏的路径是否和当前文件的路进相对 .当重新部署项目到服务器时,如果部署完后控制台什么也没有打印并当重新访问项目的页面时路径和页面都存在却报404错误,关闭服务器再启动试一试(重启编译器不行) .在浏览器中出现404/400页面,检查Web是否正确部署到服务器及浏览器地址栏中输入的地址和端口号是否正确还要看项目名ProperticsMyEclipseWebContext root Web Context-root右边的名称是否和/项目名一样,Jsp文件只能放在WebRoot目录下 .在浏览器中出现无法显示网页的页面,检查Tomcat服务是否启动和正确运行及浏览器地址栏中输入的地址和端口号是否正确、再检查是否部署服务器 11.在浏览器中出现500/503页面,说明有语法/逻辑错误,或未打开服务器 12.当服务器无法启动(即:马上启动又马上关闭时)是因为端口一直被另一个程序占用的原因,可以打开任务管理器结束占用该端口的进程,也可以重启电脑解决该问题 13.部署项目到服务器时发生的错误:当部署项目时,如果部署到某时突然发生错误,把服务器上现有的项目删除后再重新部署即可 14.MyEclipse中启动Tomcat报Could not find the main class错:(意思是找不到Ant的主类,原因是MyEclipse中的ANT_HOME指向不对)WindowPreferencesAntRuntime 单击右边显示框中的Classpath标签项选中其中的Ant Home Entries项单击右边的Ant Home按钮将Ant Home Entries的指向改为MyEclipse插件目录(MyEclipse安装盘 符:*GenuitecCommonplugins)下的org.apache.ant_1.7.*.v200*lib 15.当打开/重启编译器(MyEclipse)后项目/代码报错(之前没有报错(重新打开/重启编译器后报错)或代码和逻辑都没有错,点击错误前面的错误提示图标后提示有Change Workspace compliance and JRE to 1.5的信息),是因为工作空间配置不对,点击错误前面的错误提示图标再双击Change Workspace compliance and Jre to 1.5即可 注:当做有Hibernate的项目时,如果程序不报错,逻辑上也找不到不对的地方时,可将控制台打印的hql语句转换成sql语句后的语句复制到数据库中执行,以检查hql语句的错 误 (2).代码错误导致报的错 .当页面/控制台报错时(没有遇到过的错/看不懂的错),先看错误信息中的错误信息来源于哪个类/方法/哪行代码,在根据那行代码多试几中方法 .保存时发生的错误:当jsp文件中的内容改变,要保存的时候,要先把第一行的pageEncoding属性值设置为utf-8,否则将报错不能保存 .启动服务器报错,可能的错误有:配置文件有错,也可能是JSP页面中的标签有错(此时它不一定报正在使用的程序的错,有可能报其他程序的错),可以在服务器的webapps 目录下把标签有错的项目删除 .JavaBean引起的错误: JavaBean的属性名首字母必须小写,否则即使再dao层、server层和servlet中可以取得其中的值,在Jsp页面中无论用什么方法都不能取得 .当不出现预想的效果时,如果确认不是浏览器缓存所致,但又找不出错误和原因并浏览器状态栏左边出现有网页上有错误的消息时,双击此消息单击弹出框中的显示 详细信息按钮查看错误(其中的行和错误说明了错误的位置和原因) .当在jsp页面中用和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连接失败。.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 .,可能是因为目标页面中的的items的值写成了直接用引起的字符串,items的中应该用EL取值,即应该是items=$List或Object,或者是EL中 的对象/属性名和javaBean中的不同(应仔细检查) 15.如果在使用之前jsp文件已经有了数据,文件执行就会出错 16.当控制台出现有java.lang.SecurityException:class org.objectweb.asm.CodeVisitors signer information does not match signer information of other c lasses in the same package的安全异常时,是因为包冲突引起的 17.当控制台出现有com.microsoft.sqlserver.jdbc.SQLServerException:Invalid object name数据库名.dbo.表名/视图名错误时,是因为数据库中不存在指定的表名 18.当控制台出现有Could not instantiate bean class 完整的包名+类型:Constructor threw exception;nested exception is java.lang.Error:Unresolved compi lation problem:The 一段报错的语句 cannot be resolved的错误异常时是因为后台有报错的代码,改正报错的代码即可 19.当控制台/页面报有java.lang.ClassCastException:.的错时,可能是因为数据类型装换时不对,或javabean封装/转换不对 3.总是在控制台提示该连接已被关闭时,是因为dao层的connection被声明为全局的(),改connection为局部即可 4.当重新部署项目到Tomcat报错或部署项目时选Tomcat不能Finish时,是因为Tomcat的路径(WindowPreferencesMyEclipseApplication ServersTomcatTomcat 6.xTomcat home directory、Tomcat base directory、Tomcat temp directory的路径应为Tomcat安装路径的根目录,即.Tomcat 6.0目录)没有选对 5.Ajax出现的错误: (1).当控制台出现java.lang.SecurityException:Script names may only contain Java Identifiers的错误时,可能是因为jsp页面中的代码错误,可以把此代码中的interface/后的dwr/去掉 (2).当保存web.xml在控制台出现java.lang.reflecst.InvocationTargetException的错误时,可能是因为web.xml中Ajax配置节点的所有dwr-invoker节点有错,此节点中的dwr-必须有 (3).当控制台出现有警告:Page not found. pathInfo=?/?/?.js requestUrl=?/?/?.js(?代表*路径)类似的信息时,是因为jsp页面上的代码中的src中的路径错误 6.CVS出现的错误: (1).不能提交或提交时报错:确认客户端和服务器端是连接上的,或因为MyEclipse上的版本低于CVS服务器上的版本,则先Update (2).Update或Commit失败时,首先看计算机是否连接上和服务器端的防火墙是否关闭 (3).当客户端能连接上服务器端(即能ping通并能共享文件)但又不能下载项目/Update/Commit时是因为服务器端的防火墙没有关闭 7.Hibernate出现的错误: (1).在New一个数据库连接时,如果新建成功但连接不上数据库,这可能是因为Connection URL项处输入的连接地址中的端口和数据库名不对,或者在连接时突然弹出一个标题为 Error的报错窗口并在第二行提示The TCP/IP connection to the host has failed.时,是因为SQL Server配置管理器/SQL Server Configuration Manager中的(资源管 理窗口中的)SQL Server配置管理器(本地)/SQL Server 2005网络配置/MSSQLSERVER的协议中的TCP/IP状态为已禁用(TCP/IP状态为已禁用是因为其属性中的协议项的已启 用值为否(应该为是),和IP地址项的已启用值为否(应该为是) (2).不能将表映射为JavaBean的错误: .当生成JavaBean找不到要生成到的项目时,是因为在导如Hibernate jar包时,到步骤选DB Drever右边的下拉选项中选创建的数据库连接名称时没有选择所创建的数据 库连接名称 .当生成JavaBean不能生成(生成失败)时,是因为项目中没有导入Hibernate jar包 (3).当控制台出现有org.hibernate.MappingException:Unknown entity:entity.JavaBean的错误时,说明没有在Hibernate.cfg.xml文件中加映射文件的标签 (4).当控制台出现有org.hibernate.id.IdentifierGenerationException:ids for this class must be manually assigned before calling save():entity.NetBar的错误时 ,说明没有把Hibernate.cfg.xml文件中的主键生成器标签中的assigned设为native (5).当控制台出现有Exception in thread main org.hibernate.HibernateException:/hibernate.cfg.xml not found的错误时,是因为hibernate.cfg.xml没有放在src的根 目录下,hibernate.cfg.xml文件必须放在src根目录下才可以. (6).在有多对一的关联映射中,当控制台出现有Exception in thread main org.hibernate.LazyInitializationException: could not initialize proxy-the owning Ses sion was closed的错误时,是因为没有在多的方的hbm.xml文件的many-to-one节点中配置lazy=false属性(lazy是延时加载,值为false时关闭延时加载) (7).当控制台出现有Exception in thread main org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed的错误 时,说明 (8).当控制台出现有Exception in thread main org.hibernate.PropertyAccessException:exception setting property value with CGLIB (sethibernate.cglib.use_r eflection_optimizer=false for more info) setter of entity.Computer.setNetBar的错误时,说明 (9).当控制台出现有org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions的错误时,是因为dao层所有方法的最后没 有关闭session(即:没有session.close();) (10).当控制台出现有java.lang.OutOfMemoryError: PermGen space的错误时重启服务器即可 (11).当执行了dao层的方法返回正确的结果但数据库中的数据仍然没有改变时,可能是dao层的方法中没有执行事务提交的方法commit(); (12).当控制台出现有. ids for this class must be manually assigned before calling Hibernate方法():JavaBean所在的包.JavaBean名;nested exception is org.h ibernate.id.IdentifierGenerationException:ids for this class must be manually assigned before calling Hibernate方法():JavaBean所在的包.JavaBean名Ca used by:org.hibernate.id.IdentifierGenerationException:ids for this class must be manually assigned before calling Hibernate方法():JavaBean所在的包 .JavaBean名at org.hibernate.id.Assigned.generate(Assigned.java:33)的错误时,是因为JavaBean的映射文件:*.hbm.xml中的id节点中的节点的class属 性的值不是native (13).当控制台出现有org.hibernate.exception.GenericJDBCException:could not execute query . . Caused by:com.microsoft.sqlserver.jdbc.SQLServerException:只进结果集不支持请求的操作的错误时,一般出现于分页查询的方法中,是因为传到方法中的排除量或其 它参数小于0(为负数) (14).当使用Hibernate或Hibernate与其它框架整合时,在执行了save/update/delet/其它方法后,如果执行结果成功(没有报异常)但是数据库中却没有效果(数据改变),是因为 hibernate的操作只提交到事务中,事务没有将执行结果提交到数据库的原因(即没有手动配置事务的commit方法(事务可以通过session创建/开始(只要可以调用get/save /其它方法的对象/方法都可以获得/开始事务) (15).当页面/控制台打印org.springframework.dao.InvalidDataAccessResourceUsageException:could not execute query;SQLHibernate将hql转换后的sql语句;nested exception is org.hibernate.exception.SQLGrammarException:could not execute query异常时(说明hql语句是对的,所以才被Hibernate装换为sql语句),是因为java Bean的映射文件中对应的数据库中的列名不合 (16).当控制台出现有* line 数字 *或* unexpected token: *或* at org.hibernate.hql.antlr.HqlBaseParser *(HqlBaseParser.java:*)at org.hibernate.hql.ast.Quer yTranslatorImpl.parse(QueryTranslatorImpl.java:*)或java.lang.reflect.InvocationTargetException换行sun.reflect.NativeMethodAccessorImpl.invoke(Nativ eMethodAccessorImpl.java:39)换行java.lang.reflect.Method.invoke(Method.java:597)的错误时,是hql语句有错引起的(可能是from写成了form或select写成了selc st/slect等) 注1:当页面/控制台报不明错误(从来没有遇到过的并用System.out.println()跟踪都不能检查出错的地方,或当在不同的地方调用同一个方法时,一个地方能正常调用而另一个 地方却始终报错时)时,先打印出相关的hql语句看是否正确 注2:当控制台/页面打印有java.lang.reflect.InvocationTargetException或java.lang.NoSuchMethodError:org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr/Rec ognitionException;Lantlr/collections/impl/BitSet;)V的错误时,是因为hql语句的错误,先打印相关hql语句,看hql语句是否有正确 8.Struts出现的错误: (1).struts2出现的错误: .当启动服务器或重新部署项目时控制台打印Unable to load configuration.-include -file:/盘符:/./.metadata/.me_tcat/webapps/项目名/WEB-INF/classes/st ruts.xml:8:32异常语句时是因为struts2.xml或拆分后的其它struts2配置文件中没有头文件 (2).struts1出现的错误 .当控制台出现有java.lang.IllegalArgumentException: Path Demo.jsp does not start with a / character的错误时,是因为struts-config.xml文件中处的path属性没有/ .当控制台出现有javax.servlet.jsp.JspException:Cannot find ActionMappings or ActionFormBeans collection并页面上出现org.apache.jasper.JasperExceptio n:An exception occurred processing JSP page/*.jsp at line *的错误时,是因为jsp页面中使用的表单中的action=*.do中缺少/ .当控制台出现有java.lang.NoSuchMethodException:Action/*/* does not contain specified method (check logs)的错误时,是因为当前的jsp页面的表单中传的 参数method的值在action中没有此名的方法 .当浏览器出现有HTTP Status 404-Invalid path was requested的字符串或者普通404错误时,是因为当前jsp访问Action的方式不对,因为如果是页面中的html标签表单 或html标签超连接访问Action时可以加.do,也可不加,但是如果是普通标签或普通超连接访问Action时就必须加.do .如果能确定一个一开始不需访问Action的页面(如添加信息的页面)中的代码没有错误,但是访问时发生500错误或同时在控制台打印org.apache.jasper.JasperExcepti on:/././.jsp(29,1)Attribute Attribute invalid for tag form according to TLD之类的信息时,可能是因为页面中使用了html标签的控件或表单(因为htm l控件会自动绑定FormBean的属性值,而该页面又没有/不需要有相应的FormBean),把html控件或表单改为普通的即可 9.Spring出现的错误: .用Spring时,只要某个层报空异常,是因为Spring没有给该层中调用的接口注入相应的实现类对象 .当页面/控制台打印以下错误语句时:org.springframework.orm.hibernate3.HibernateQueryException:javaBean名 is not mapped hql语句;nested exception is org.hibernate.hql.ast.QuerySyntaxException:javaBean名 is not mapped hql语句,是因为Spring的配置文 件中没有配置相应的javabean.hbm.xml文件所致 10.SSH出现的错误: (1).SSH2出现的错误 .当控制台打印有org.springframework.dao.InvalidDataAccessApiUsageException:Write operations are not allowed in read-only mode (FlushMode.NEVER) - t urnyour Session into FlushMode.AUTO or remove readOnly marker from transaction definition的错误时,是因为Spring中的Hibernate的org.springframewor k.orm.hibernate3.support.OpenSessionInViewFilter打开后flushMode的默认值是MANUAL(手动)的,此时要将其改为AUTO(自动),可以在配置Hibernate的过滤节点下加flushModeAUTO试试 .当用页面的或访问/调用action时,如果访问的路径和struts.xml中节点下的namespace的值相同也和节点下节点中的name 的值是相同的,但就是报404/其它错误时先看applicationContext.xml中的创建的action对象的id值是否和struts.xml中节点下的节点中的class的 值是否相同,如果是相同的也还报这个错,再看web.xml中配置的struts2的过滤方式:节点下的节点的值是否是/*或/action .当执行到层的insert/update/delete方法时,如果控制台打印执行成功且没有报错但数据库中的数据没有改变时,是因为事务没有配置对的问题 .配置Spring时,如果确定配置无错且和以前配的一模一样,但是它总是报以前出现过的错或无效果时,是因为服务器中任然还 残留 以前的代码,将服务器中的项目彻底删 除后重新部署即可 .当控制台/页面打印java.lang.RuntimeException:Invalid action class configuration that references an unknown class named className错误时,是因为str uts2的配置文件中所配置的和action声明/返回的对象不匹配,总之是配置文件和程序配置冲突所致 注1:当页面/控制台报不明错误(从来没有遇到过的并用System.out.println()跟踪都不能检查出错的地方,或当在不同的地方调用同一个方法时,一个地方能正常调用而另 一个地方却始终报错时)时,先打印出相关的hql语句看是否正确 注2:当控制台/页面打印有java.lang.reflect.InvocationTargetException或java.lang.NoSuchMethodError:org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr /RecognitionException;Lantlr/collections/impl/BitSet;)V的错误时,是因为hql语句的错误,先打印相关hql语句,看hql语句是否有正确 (2).SSH1出现的错误 .当控制台打印java.lang.NullPointerException的空指针异常时,可能是Spring中注册Struts时只注册了:bean name=Struts中节点而没有将Spring中已创建的服务层或其它层的实现类对象注入到Spring中注册Struts时的节点中,也可能是Struts的配置 文件中节点下的节点中的type属性的值没有改为org.springframework.web.struts.DelegatingActionProxy .当控制台什么也没有打印,而浏览器打印有HTTP Status 500 - No action instance for path /项目名 could be created的错误时,是因为既没有导入Spring 2.0 We b Libraries jar包也没有在Struts中的message-resources节点下加节点 .当控制台打印java.lang.ClassNotFoundException: org.springframework.web.struts.ContextLoaderPlugIn的错误时,是因为导入Spring jar包时没有勾选Spring 2 .0Web Libraries项即没有导入Spring 2.0 Web Libraries jar包 .当控制台打印java.lang.IllegalStateException:No WebApplicationContext found:no ContextLoaderListener registered?的错误时,可能是Struts的配置文件中没 有配置 注1:当页面/控制台报不明错误(从来没有遇到过的并用System.out.println()跟踪都不能检查出错的地方,或当在不同的地方调用同一个方法时,一个地方能正常调用而另 一个地方却始终报错时)时,先打印出相关的hql语句看是否正确 注2:当控制台/页面打印有java.lang.reflect.InvocationTargetException或java.lang.NoSuchMethodError:org.hibernate.hql.antlr.HqlBaseParser.recover(Lantlr /RecognitionException;Lantlr/collections/impl/BitSet;)V的错误时,是因为hql语句的错误,先打印相关hql语句,看hql语句是否有正确 11.Ext出现的错误: (1).当不出现预想的效果时,如果确认不是浏览器缓存所致,但又找不出错误和原因并浏览器状态栏左边出现有网页上有错误的消息时,双击此消息单击弹出框中的显示详细 信息按钮查看错误(其中的行和错误说明了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论