2023年7月29日发(作者:)
一.Java程序调试与错误收集 程序的调试与排错:尽量使用n();和打印hql语句的方式跟踪查错 (1).非代码引起的报错 ①.jar包引起的错误:当从版本控制器上下载项目时,如果项目报错但是所有类文件和配置文件和所有手动建的包都没有报错的情况时是因为项目中的jar包有错,修改或删 除jar包即可 ②.编译器版本不合报错:当启动服务器或部署项目时控制台打印有:*
ortedClassVersionError:Bad version number in .class file的异常语句时是因 为当前MyEclipse使用的jdk版本和项目创建时的jdk版本不合而引起的,进入MyEclipse>Window>Preferences>点击弹出的对话框左边的树形菜单中的"Java"项下的Comp iler项>点右边显示框中Compiler compliance level:右边的下拉列表并选择和创建项目时的jdk版本相同的jdk版本号>点击右下角的"Apply"按钮>点击击右下角的"Ok "按钮即可 ③.当控制台或页面上打印Exception: The absolute uri:
/jsp/jstl/core cannot be resolved in either o r the jar files deployed with this application的异常语句时,是因为缺少jar包或jar包版本不对或配置问题 方法一:在工程中导入JSTL jar包后(把*.jar和*.tld放到/WEB-INF/lib目录下)在JSP页面中导入<%@ taglib uri="/WEB-INF/lib/" prefix="c"%> 方法二:修改(加上下面语句)
再在JSP文件中导入<%@ taglib uri="/WEB-INF/lib/" prefix="c"%> ④.当代码、配置文件和路径都没有错时,但是它总是报以前的错或不出效果,是因为服务器中任然还 残留 以前的代码,将服务器中的项目彻底删除后重新部署即可 ⑤.当两个页面同时访问同一个资源时(),如果代码完全一样但一个可以访问另一个却不能访问(报404错)时,可能是因为另一个页面中有以下代码:<%String path=request .getContextPath();String
basePath=eme()+"://"+verName()+":"+verPort()+path+"/";%>
pse中启动Tomcat报Could not find the main class错:(意思是找不到Ant的主类,原因是MyEclipse中的ANT_HOME指向不对)Window>Preferences>Ant>Runtime> 单击右边显示框中的Classpath标签项>选中其中的Ant Home Entries项>单击右边的Ant Home按钮将Ant Home Entries的指向改为MyEclipse插件目录(MyEclipse安装盘 符:*GenuitecCommonplugins)下的_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页面中无论用什么方法都不能取得 ⑤.当不出现预想的效果时,如果确认不是浏览器缓存所致,但又找不出错误和原因并浏览器状态file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22]栏左边出现有"网页上有错误"的消息时,双击此消息>单击弹出框中的"显示 详细信息"按钮查看错误(其中的"行"和"错误"说明了错误的位置和原因) ⑥.当在jsp页面中用
conflicts with a type defined in the same file时,表示声明的类名和导入 的包名冲突 ⑧.当控制台出现有otFoundException:的错误时,说明项目找不到Servlet,可能是中没有配置或配置错误,如果确认配置没有错但仍然报此错误时 ,就把中对应的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中设置请求流和相应流的编码方式,tentType( "text/html;charset=utf-8");racterEncoding("utf-8"); 11.当控制台出现有"...将截取字符串错误..."的错误时,是因为数据库相应字段的数据长度不够 12.当访问任意一个页面都出现404错误时或当启动Tomcat服务器在控制台打印相关报错语句时,可能是因为或其他xml配置文件配置错误也可能是因为导入的jar包 冲突. 13.当控制台出现有verException:到主机的TCP/IP连接失败。tException: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错误并在控制台打印file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22]tyNotFoundException:Property 'PropertyName' not found on
type ...,可能是因为目标页面中的
signer information does not match signer information of other c lasses in the same package的安全异常时,是因为包冲突引起的 17.当控制台出现有verException:Invalid object
name'数据库名.dbo.表名/视图名'错误时,是因为数据库中不存在指定的表名 18.当控制台出现有Could not instantiate bean class [完整的包名+类型]:Constructor
threw exception;nested exception is :Unresolved compi lation problem:The 一段报错的语句 cannot be resolved的错误异常时是因为后台有报错的代码,改正报错的代码即可 19.当控制台/页面报有astException:...的错时,可能是因为数据类型装换时不对,或javabean封装/转换不对 3.总是在控制台提示"该连接已被关闭"时,是因为dao层的connection被声明为全局的(),改connection为局部即可 4.当重新部署项目到Tomcat报错或部署项目时选Tomcat不能Finish时,是因为Tomcat的路径(Window>Preferences>MyEclipse>Application Servers>Tomcat>Tomcat 6.x>Tomcat
home directory、Tomcat base directory、Tomcat temp directory的路径应为Tomcat安装路径的根目录,即...Tomcat 6.0目录)没有选对 出现的错误: (1).当控制台出现tyException:Script names may only contain Java
Identifiers的错误时,可能是因为jsp页面中的代码错误,可以把此代码中的interface/后的dwr/去掉 (2).当保存在控制台出现tionTargetException的错误时,可能是file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22]因为中Ajax配置节点的所有
Drever右边的下拉选项中选创建的数据库连接名称"时没有选择所创建的数据 库连接名称 ②.当生成JavaBean不能生成(生成失败)时,是因为项目中没有导入Hibernate jar包 (3).当控制台出现有gException:Unknown entity:an的错误时,说明没有在文件中加
be manually assigned before calling save():的错误时 ,说明没有把文件中的主键生成器标签
ateException:/ not found的错误时,是因为没有放在src的根 目录下,文件必须放在src根目录下才可以. (6).在有多对一的关联映射中,当控制台出现有Exception in thread "main"
itializationException: could not initialize proxy-the owning Ses sion was closed的错误时,是因为没有在多的方的文件的many-to-one节点中配置lazy="false"属性(lazy是延时加载,值为false时关闭延时加载) (7).当控制台出现有Exception in thread "main" itializationException:
could not initialize proxy - the owning Session was closed的错误 时,说明 (8).当控制台出现有Exception in thread "main"
tyAccessException:exception setting property value with CGLIB
(_r eflection_optimizer=false for more info) setter of Bar的错误时,说明 (9).当控制台出现有ateException: Illegal attempt to associate a
collection with two open sessions的错误时,是因为dao层所有方法的最后没 有关闭session(即:没有();) (10).当控制台出现有emoryError: 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 fierGenerationException:ids for this class must be manually
assigned before calling Hibernate方法():JavaBean所在的包.JavaBean名Ca used by:fierGenerationException:ids for this class must be
file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22]manually assigned before calling Hibernate方法():JavaBean所在的包 .JavaBean名at te(:33)的错误时,是因为JavaBean的映射文件:*.中的id节点中的
query;SQL[Hibernate将hql转换后的sql语句];nested
exception is mmarException:could not execute query异常时(说明hql语句是对的,所以才被Hibernate装换为sql语句),是因为java Bean的映射文件中对应的数据库中的列名不合 (16).当控制台出现有* line 数字 *或* unexpected token: *或* at
eParser *(:*)at (:*)或tionTargetException换行(Nativ :39)换行(:597)的错误时,是hql语句有错引起的(可能是from写成了form或select写成了selc st/slect等) 注1:当页面/控制台报不明错误(从来没有遇到过的并用n()跟踪都不能检查出错的地方,或当在不同的地方调用同一个方法时,一个地方能正常调用而另一个 地方却始终报错时)时,先打印出相关的hql语句看是否正确file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22] 注2:当控制台/页面打印有tionTargetException或MethodError:r(Lantlr/Rec ognitionException;Lantlr/collections/impl/BitSet;)V的错误时,是因为hql语句的错误,先打印相关hql语句,看hql语句是否有正确 出现的错误: (1).struts2出现的错误: ①.当启动服务器或重新部署项目时控制台打印Unable to load configuration.-include -file:/盘符:/.../.metadata/.me_tcat/webapps/项目名/WEB-INF/classes/st :8:32异常语句时是因为或拆分后的其它struts2配置文件中没有头文件 (2).struts1出现的错误 ①.当控制台出现有lArgumentException: Path does not start
with a "/" character的错误时,是因为文件中
ActionFormBeans collection并页面上出现Exceptio n:An exception occurred processing JSP page/*.jsp at line *的错误时,是因为jsp页面中使用的<>表单中的action="*.do"中缺少/ ③.当控制台出现有MethodException: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错误或同时在控制台打印Excepti on:/.../.../....jsp(29,1)Attribute Attribute invalid for tag form according to
TLD之类的信息时,可能是因为页面中使用了html标签的控件或表单(因为htm l控件会自动绑定FormBean的属性值,而该页面又没有/不需要有相应的FormBean),把html控件或表单改为普通的即可file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22] 出现的错误: ①.用Spring时,只要某个层报空异常,是因为Spring没有给该层中调用的接口注入相应的实现类对象 ②.当页面/控制台打印以下错误语句时:ateQueryException:javaBean名 is not mapped [hql语句]; nested exception is
yntaxException:javaBean名 is not mapped [hql语句],是因为Spring的配置文 件中没有配置相应的javabean..文件所致 出现的错误: (1).SSH2出现的错误 ①.当控制台打印有dDataAccessApiUsageException:Write
operations are not allowed in read-only mode () - t urnyour Session into or remove 'readOnly' marker from transaction
definition的错误时,是因为Spring中的Hibernate的framewor ssionInViewFilter打开后flushMode的默认值是MANUAL(手动)的,此时要将其改为AUTO(自动),可以在配置Hibernate的过滤节点
that references an unknown class named [className]错误时,是因为str uts2的配置文件中所配置的和action声明/返回的对象不匹配,总之是配置文件和程序配置冲突所致 注1:当页面/控制台报不明错误(从来没有遇到过的并用n()跟踪都不能检查出错的地方,或当在不同的地方调用同一个方法时,一个地方能正常调用而另 一个地方却始终报错时)时,先打印出相关的hql语句看是否正确 注2:当控制台/页面打印有tionTargetException或MethodError:r(Lantlr /RecognitionException;Lantlr/collections/impl/BitSet;)V的错误时,是因为hql语句的错误,先打印相关hql语句,看hql语句是否有正确 (2).SSH1出现的错误 ①.当控制台打印interException的空指针异常时,可能是Spring中注册Struts时只注册了:
path /项目名 could be created的错误时,是因为既没有导入Spring 2.0 We b Libraries jar包也没有在Struts中的 className="tLoaderPlugIn"> tLoaderPlugIn的错误时,是因为导入Spring jar包时没有勾选Spring 2file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22] .0Web Libraries项即没有导入Spring 2.0 Web Libraries jar包 ④.当控制台打印lStateException:No WebApplicationContext found:no ContextLoaderListener registered?的错误时,可能是Struts的配置文件中没 有配置 className="tLoaderPlugIn"> property="contextConfigLocation" value="/WEB-INF/clas ses/"/> signer information does not match signer information of other clas ses in the same package的安全异常时,是因为包冲突引起的,将导入的json中的删除试试 (6).当控制台出现有itializationException:failed to lazily initialize a collection of role:包名(entity).一个javaBean名.javaBean名adjus tsForAfterjavaBean名,no session or session was closed延时加载的错误时,是因为将HashMap转化为JSon时,HashMap中的数据不是String或基本数据类型,HashMap中的 数据不不能为对象型 (7).呈现Ext时如果在页面的前面和后面都同时出现相同的Ext界面,是因为js中多写了renderTo属性 ript调试: (1).当使用js时,如果重新改变js中的内容后运行页面任然没有效果时,在改变内容的js方法中打印一个字符串(alert("string");),保存后刷新页面后就有效果了附: 1.因为MyEclipse有时会"犯傻",所以如果能确认所有的代码都无误的情况下但效果还是不出来的话,就重新部署、启动服务器、关闭MyEclipse再重启 2.要判断一个List/集合中是否有值,不能用结合.equals(null),应该用结合.size(); 3.当编辑窗口中的中文出现乱码时,右击当前编辑窗口对应的包资源管理器中的类/直接右击该类所在的包>Properties>Resource>选中Text file encoding中的Other单选按钮并 选择其下拉列表中的UTF-8即可二.程序调试与错误收集=;with(){file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22] =;}错误提示:有次我把上一句的代码写成了=;从而导致了错误三.SQL Server程序调试与错误收集 1.当控制台打印"' '附近有语法错误"时,是因为SQL语句中有全角的空格 2.当控制台打印"将截断字符串或二进制数据。"时,是因为插入的某个字段的数据长度太大(大于该字段定义的长度) 3.当数据库连接不上时先检查SQL Server配置管理器/SQL Server configuration manager中各项的配置 SQL Server配置管理器(本地)/SQL Server Configuration Manager(Local)节点下的SQL本地客户端配置/SQL Native Client Configuration节点中客户端协议/Client Protoc ols中的TCP/IP项中的已启用/Enabled的值可为是(Yes)/否(No)、默认端口/Default Port的值可更改. SQL Server配置管理器(本地)/SQL Server Configuration Manager(Local)节点下的SQL Server 2005网络配置/SQL Server 2005 Network Configuration节点下的"服务名(SQ LEXPRESS)+的协议"/Protocols for 服务名(SQLEXPRESS)节点中TCP/IP项中协议/Protocol下的已启用/Enabled的值最好为是(Yes),不行时再改为否(No)、无延迟的值最好为否 (No),不行时再改为是(Yes)、全部监听的值为是、IP地址/IP Addresses下的所有的活动/Active的值为是(Yes)、激活/Enabled的值可为是(Yes)/否(No)、TCP动态端口/两项TC P Dynamic Ports的值可随意 n.当安装SQL Server2000时,如果重新装了系统都还总是提示"本计算机上已存在实例"类型的语句时,重新改过用户名即可重新安装四.Oracle程序调试与错误收集 1.使用SQL Plus时如果出现ERROR: ORA-12541:TNS:没有监听器,是因为监听器服务没有启动,控制面板>管理工具>服务>将OracleOraHome92TNSListener的服务启动即可 如果出现ERROR:ORA-12500:TNS:监听程序无法启动专用服务器进程,是因为数据库对应的服务没有启动,控制面板>管理工具>服务>将OracleServiceSID(SID为数 据库实例名)的服务启动即可file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22]五.MySQL出现的错误 1.当建表时弹出错误提示对话框并提示"Can't create table 'tableName' (errno:150)时,是因为当前表中关联了另一张不存在的表(注:一定要是150错误才是此原因)file:///E|/找好文档就上豆丁网/程序调试错误收集.txt[2016/12/13 16:00:22]
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690578430a372403.html
评论列表(0条)