程序之bug

附1:关于Maven本地仓库中的jar包损坏的解决方案

问题表现:本应该识别的类、接口无法识别,或本应该存在的类,在执行过程中,出现ClassNotFoundException,或出现ZipException。

解决方案:先关闭Eclipse,找到本地仓库(在Eclipse的设置中,Maven > User Settings中的Local Repository就是本地仓库的位置),删除本地仓库中错误的jar包(如果不知道哪个文件是损坏的,可以将整个本地仓库文件夹全部删除),然后打开Eclipse,对项目点右键,选择Maven > Update Project,并在弹出的对话框中勾选Force Update …的选项,并执行更新即可!

附2:关于Tomcat启动失败的解决方案

  1. 如果启动Tomcat时,弹出对话框,提示8009等端口号,则是因为端口被占用导致的错误,即前序已经启动了Tomcat并且未关闭,仍再次启动Tomcat,就会导致这个问题,应该将前序启动的Tomcat关闭,可以在Tomcat的安装目录的bin文件夹下执行shutdown指令,如果不知道怎么执行,可以重启计算机;
  2. 如果提示信息中并没有端口号,检查Eclipse的控制台,应该有大量的LifecycleException,仔细检查其中有没有ZipException,通常,如果有ZipException也只会有1条,则表示某个jar包是损坏的,应该考虑最近新添加过哪些依赖,删除本地仓库中对应的文件,并强制重新更新;
  3. 如果不符合以上特征,可以尝试将整个项目Clean后再次运行;
  4. 如果以上解决方案失败,可以尝试在Servers面板中对Tomcat点右键,选择Clean,并再次运行;
  5. 如果以上解决方案失败,可以尝试将Servers面板中的Tomcat删除,并将项目列表中的Servers项目彻底删除,然后在Server面板中重新添加Tomcat,将项目添加到新的Tomcat中,并再次运行;
  6. 如果以上解决方案失败,重复以上第5步的操作,但是,应该添加另一个Tomcat,甚至更换不同版本的Tomcat。

附3:关于No mapping found for HTTP request with URI [xxx] in DispatcherServlet with name 'xxx’的解决方法

错误描述:当访问某个URL时,页面显示404错误,在Eclipse的控制台提示No mapping found for HTTP request with URI [xxx] in DispatcherServlet with name 'xxx’字样的错误。

解决方案:先检查spring的配置文件是否被加载了;再检查组件扫描的包,与控制器类所在的包是否一致;再检查控制器类是否添加了@Controller;最后,检查访问的URL与控制器类中配置的请求路径是否一致!

附4:关于405错误的解决方案

错误描述:HTTP Status 405 – Method Not Allowed,Request method ‘GET’ not supported

出现405错误一定是服务器端使用@RequestMapping时限制了请求方式,而客户端提交请求时使用了其它的请求方式导致的!

首先,观察出错时访问的路径,例如浏览器的地址栏中的访问路径,然后在控制器中找到配置这个路径的@RequestMapping,检查注解中关于method的配置是否合理,并检查客户端提交的请求方式。

附5:关于400错误的解决方案

错误描述:HTTP Status 400 – Bad Request,Required String parameter ‘uname’ is not present

出现400错误一定是服务器端使用@RequestParam要求客户端提交请求参数,但是,客户端提交请求时,并没有提交指定名称的参数
附1:关于SQL语法错误的解决方案

如果SQL语句的语法出错(例如关键字拼写错误、标点符号使用错误等),在错误提示中找near关键字,在near的右侧会提示出错的SQL语句部分,在原SQL语句中,被提示的SQL语句部分的左侧就是出错的位置!

附6:如果通过程序快速的向数据表中插入1000万条已知的数据

假设存在某个List集合中有1000万条数据,需要将这些数据插入到数据表中。

首先,可以将该List集合遍历,即执行1000万次循环,在循环过程中,通过JDBC技术插入数据。但是,这种做法的效率肯定是非常低的!

通常,应用服务器与数据库服务器会是不同的服务器计算机!如果每次连接后,只传输1条SQL语句交给数据库服务器去执行,效率就是非常低的!要解决这个问题,可以使用批处理,即每次向数据库服务器传输多条SQL语句,以减少连接和传输的次数!一般情况下,批处理的设计值不建议超过5000!

另外,每条SQL语句被传输到数据库服务器后,首先,都必须经历词法分析、语义分析、编译等的过程,才可以被执行,无论是否采取批处理机制,整体都需要执行1000万次的分析、编译过程!可以采取INSERT INTO table (cols …) VALUES (value_1), (value_2), … (value_n)这类的SQL语句,以减少SQL语句的数量,进而减少分析、编译的次数!

所以,可以综合使用以上2种机制,例如将List遍历后,生成的每条SQL语句可以插入100个值,使用批处理,每批传输100个这样的SQL语句,将这样的批处理执行1000次,即可插入1000万条数据!

附7:连接数据时Access denied错误

示例:Caused by: java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)

以上错误信息中,‘root’@'localhost’表示哪个用户登录了哪台计算机的MySQL服务器,此处可用于检查用户名是否正确,(using password: YES)表示使用了密码,但密码错误!如果是(using password: NO)表示没有填写密码,但实际上该账号是有密码的,所以无法登录!

附8:关于重定向的次数过多的解决方案

问题描述:页面提示“重定向的次数过多”。

问题分析:多考虑为当前项目中使用了拦截器对某些路径进行拦截,并且,可能阻止运行的同时还有重定向操作,例如:把登录页添加到拦截列表中,而拦截器的规则是“没有登录将重定向到登录页”,就会反复重定向!

解决方案:首先需要检查拦截器配置的拦截列表,同时,检查拦截器类中preHandle()的判定规则,在什么情况下会重定向。

附9:关于SQL语法错误的解决方案

如果SQL语句的语法出错(例如关键字拼写错误、标点符号使用错误等),在错误提示中找near关键字,在near的右侧会提示出错的SQL语句部分,在原SQL语句中,被提示的SQL语句部分的左侧就是出错的位置!

附10:关于Invalid bound statement的解决方案

错误描述:使用MyBatis处理增删改查时,提示Invalid bound statement错误。

解决方案:

  1. 检查是否配置了接口文件在哪里,配置是否正确;
  2. 检查是否配置了XML文件在哪里,配置是否正确;
  3. 检查抽象方法的名称与XML映射中节点的id是否一致;
  4. 可能因为jar包文件损坏(概率较低)。

附11:关于Oracle的解决方案

ORA-01034 - Oracle not available”和“ORA-27101 - shared memory realm does not exist”

如果你遇到同样的问题,那么不妨看一下我这里介绍的几个解决方法

1.起因:数据库没有正常关闭

解决方法:关闭数据库然后再重新启动,我们的CRM每次报这个错误一般都是因为上次没有正常关闭引起的,所以只要关闭后再打开就行。具体如下:

打开命令窗口:

sqlplus “sys/dba as sysdba”[这里sys是用户名,dba是密码,如果用系统用户,即sys登陆,则必须后面跟上as sysdba]

这一步你也可以直接打开sqlplus命令窗口,输入用户名和密码

shutdown abort

直接用abort最强烈的手段将其关闭,因为我们oracle的数据库中数据量已经比较大,如果采用温和的方式immediately,可能会卡死在那儿不动,当然如果你的数据量比较小,可以选择温和的方式,这样不容易损坏数据库。

startup

这样数据库就启动好了,重新访问下试试,应该没有问题了

附12:js替换错误

				/*/#{sid}/g正则表达式匹配所有的sid,并且替换掉*/
                html = html.replace(/#{sid}/g, list[i].sid);
                /*只会替换第一次出现的sid*/
                html = html.replace("#{sid}", list[i].sid);

附13:SSM项目业务层忘记添加注解错误

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.hubang.service.IUserService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

猜你喜欢

转载自blog.csdn.net/qq_37669050/article/details/101701849