遇到的Exception/error及解决办法记录汇总
一、java.net.SocketException
1、java.net.SocketException:Connection reset
首先,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。
然后,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。
简单的说就是在连接断开后的读和写操作引起的。
2、如果在报错中有java.net.SocketInputStream.read():考虑要读取的输入流的资源不存在或者格式错误,也可能是路径地址出错
3、socket-详细分析No buffer space available:参见 http://www.cnblogs.com/hjwublog/p/5114380.html
二、org.hibernate.Exception
1、org.hibernate.ObjectNotFoundException: No row with the given identifier exists:
原因可能是POJO映射文件中的字段和数据库里表的字段不匹配(不一致)。另外还有一种可能就是表A与表B之间存在关联关系,并且从表A中通过外键查询表B当中的符合条件的记录时,在表B找不到相应的记录,但这种关联关系还继续维持着!
很可能是因为设置级联操作。 又或者是在删除表A的记录时,你并没有同时删除与之关联表B中的记录!!!
2、org.hibernate.PropertyAccessException: exception setting property value:
主要是数据库中number类型的字段为空导致的错误。其实挺好理解的当HIBERNATE获取到空时返回NULL,但是如果 你配置的映射文件中type 是long或者其他基本数据类型时,就会出现错误。解决的方法有2种
第一:设定数据库,如果是number类型或者其他映射后是基本数据的类型时,为其设定默认值。
第二:在POJO类中的set器 传入基本数据类型的封装类,然后进行判断,如果是NULL就赋给默认值。
3、org.hibernate.LazyInitializationException: could not initialize proxy - no Session:
这是一个lazy使用后的Exception,使用迟时加载,在session(hibernate里的session),关闭后使用该对象的未加载变量,也就是说session已经关闭,没有保存到内存中,然后你使用了,导致该异常。
原因:<may-to-one>or<one-to-may>的lazy属性默认为:lazy = "proxy"
解决:<many-to-one> & <set> 中设置 lazy="false"
三、org.apache.jasper.jasperException
访问JSP时,报错:Attribute value is quoted with " which must be escaped when used within the value 。相信很多人都遇到过,以下结合本人查资料与亲自实践得到的结论。(有不对的地方还请指教)
错误常发生的位置 value="<%=""+request.getAttribute("name")%>"
错误产生的原因,是因为tomcat版本升级后(6.0以后),对双引号的处理机制引起的,如果出现双引号包含双引号的情况,就可能会出现这个错误。
解决办法有好多种,大多数网上的意见是改为value=‘<%=""+request.getAttribute("name")%>’ 这样确实可以解决这个报错,可能无法完全解决问题,比如项目中有很多地方以前都用的是双引号,修改起来会非常麻烦,还容易出错。
查看tomact文档有一段话这样描述的“If false the requirements for escaping quotes in JSP attributes will be relaxed so that an unescaped quote will not cause an error.
If not specified, the specification compliant default of true will be used.” 这个描述针对的是tomact的org.apache.jasper.compiler. Parser.STRICT_QUOTE_ESCAPING属性。
如此一来,我们知道只要在tomcat启动时将这个属性设为false就可以解决这个问题。
那么怎么将这个属性设置到tomcat的system属性中呢,有至少两个办法:
一种是利用tomcat启动的执行脚本,在执行过程中调用setenv.sh,在其中设置环境变量,如:JAVA_OPTS=%JAVA_OPTS%: -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false
另一种是找到conf/catalina.properties文件,在最后添加org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false 即可。
四、java.lang.NoClassDefFoundError:TagSupport
这个错误应该就是没有成功加载tomcat自带的jar包jsp-api.jar。
在网上看到很多网友说要把tomcat/lib下的jsp-api.jar拷贝到项目/WEB_INF/lib下并导入,本人试了一下这是有问题的,这样虽然在启动tomcat的时候不会报错了但是在运行程序(比如打开网页)的时候就会报错,因为jar包冲突了。
解决办法:
1.引用jsp-api.jar
项目右键-->properties-->java Build Path-->Libraries-->add External JREs-->tomcat下的jsp-api.jar
2.直接整体加入tomcat的jar包
项目右键-->properties-->java Build Path-->Libraries-->Add library-->Server Runtime-->Apache Tomcat xx
注意:当你已经引用了tomcat/lib下的jsp-api.jar,在运行程序的时候如果报以下错误:
java.lang.ClassCastException: org.apache.struts.taglib.bean.CookieTei cannot be cast to javax.servlet.jsp.tagext.TagExtraInfo
需要去你发布的项目下:也就是/tomcat xxx/webapps/项目名/WEB-INF/lib下去删除jsp-api.jar,然后重启tomcat。
五、javax.net.ssl.SSLHandshakeException
I.报错: javax.net.ssl.SSLHandshakeException
II.原因分析:
CAS部署时,常常要涉及到HTTPS的证书发布问题。由于在实验环境中,CAS和应用服务常常是共用一台PC机,它们跑在相同的JRE环境和Tomcat服务器上,因此忽略了证书的实际用途,一旦将CAS和应用分别部署在不同的机器上时,就晕了!
这里假设如下实验环境来说明相应的部署
机器A: 部署CAS服务
机器B: 部署OA应用
机器C: 用户浏览器端
1.由机器A上生成.keystore的证书文件,证书颁发者是机器A的完全域名
2.机器A上用于部署CAS的Tomcat的server.xml文件中定义HTTPS的配置,指向.keystore文件证书
3.从.keystore中导出的凭证文件要copy到机器B上,并导入机器B的JRE环境的证书库中
4.机器B上部署OA的Tomcat必须指定运行在导入凭证JRE环境上,而不是JDK,这点常有人搞错。
III.导入证书步骤:
1.找到JRE
1)机器B的OA应用直接部署在Tomcat
>>>独立的JRE
如果你在安装JDK时,选择了同时安装JRE,那么系统是跑在独立的JRE上。
为什么?因为在安装独立JRE的时候程序自动帮你把jre的java.exe添加到了系统变量中,验证的方法很简单,大家看到了系统环境变量的 path最前面有“%SystemRoot%system32;%SystemRoot%;”这样的配置,
那么再去Windows/system32下面去看看吧,发现了什么?有一个java.exe。
>>>JDK里的JRE
如果没有同时安装独立JRE,那么系统跑在JDK自带的JRE上。
2)机器B的OA应用在MyEclipse中开发测试中
MyEclipse-右键project-Java Build Path-Libraries-双击JRE-一般是Workspace default JRE;
MyEclipse-windows-Preferences-Java-Installed JREs-右边有Myeclipse默认自带的JDK,双击即可查到JRE home;
2.到机器A拷贝证书xxx.cer文件到机器B
3.导入命令
cmd进入命令行窗口;cd进入JRE目录\lib\security;
keytool -import -alias cacerts -keystore JRE目录\lib\security\cacerts -file 证书目录\xxx.cer -trustcacerts;
提示输入密码:changeit;
确定:y
4.如果keytool用不了,查看下path,classpath是否配置正确。
IV.自己总结的证书导入步骤(cmd进入命令行窗口,cd进入JRE目录\lib\security):
1.查看证书:keytool -list -keystore /xxx/cacerts -storepass changeit
2.删除同名证书:keytool -delete -alias 证书名称 -keystore /xxx/cacerts -keypass changeit
3.导入证书:keytool -import -alias 证书名称 -file /xxx/server.cer -keystore /xxx/cacerts -storepass changeit 或者
keytool -import -v -rfc -trustcacerts -alias 证书名称 -file /xxx/server.cer -keystore /xxx/cacerts -storepass changeit -keystore cacerts所在完整路径 -storetype JKS;
4.如果keytool不可用(提示不是内部命令);cd /xxx/jdk1.xxx/bin
或者直接在classpath里面配置%JAVA_HOME%\lib\tools.jar;
六、CASAuthenticationException: Unable to validate ProxyTicketValidator
单点登录报错:Unable to validate ProxyTicketValidator
edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator
[[edu.yale.its.tp.cas.client.ProxyTicketValidator proxyList = [ null ]
[edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl =
[https: // sourcesite:8443/cas/proxyValidate] ticket=[ST-0-UMjsI0YOhF15RhutnkHW]
service=[http%3A%2F%2Fdestsite%3A8080%2Fservlets-examples%2Fservlet%2FHelloWorldExample]
renew=false]]]
...
可能的原因:
1.证书未正确产生和导入。在SSL握手中,CAS Client无法识别CAS Server的证书(X),即无法建立一条从cacerts信任证书到X的信任路径,读者可以看一个叫做PKIX规范。
解决办法是检查tomcat使用的信任证书路径,通常是jre/lib/security/cacerts文件,看是否已经导入了所需信任证书。
2. 未使用域名作为访问服务器。
3. tomcat使用的jvm不是系统默认的jdk所带的JVM,这个经常发生。
七、java.lang.OutOfMemoryError: Java heap space
1、首先得确定有没有跑多个java进程,
2、然后看一下tomcat/wapps下面是不是有忘了remove的项目(本人就是关闭了一个之前的项目,但是还在wapps里面没有移除)
3、引起java.lang.OutOfMemoryError: Java heap space异常,可能是由JAVA的堆栈设置太小的原因
根据网上的答案大致有以下两种解决方法:
1)、在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms384m -Xmx384m
注意:只有startup.bat启动tomcat,设置才能生效,如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了,
就是说set JAVA_OPTS=-Xms384m -Xmx384m没起作用
2)、在Eclilpse中修改启动参数,在VM arguments 加入了-Xms384m -Xmx384m,设置如下图所示

八、java.lang.RuntimeException: Unable to create XMLReader
XmlReader 读取文件异常:
java.lang.RuntimeException: Unable to create XMLReader
org.jasig.cas.client.util.XmlUtils.getXmlReader(XmlUtils.java:44)
org.jasig.cas.client.util.XmlUtils.getTextForElement(XmlUtils.java:116)
root cause
java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
...
解决办法:(jar包下载)
导入dom4j.jar和xerces.jar;尤其是需要后面一个jar包.
九:
遇到的Exception/error及解决办法记录汇总的更多相关文章
- jenkins编辑报错Exception when publishing, exception message的解决办法
jenkins编辑报错Exception when publishing, exception message的解决办法 查看目标主机的磁盘空间是否占满,清理磁盘空间即可
- 使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行
使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行 前几天项目中有一个图表的是用echart生成的,遇到一个问题,就是在手机端显示的售时候,如果文字太长就会超出div,之前的 ...
- 记录一次MyEclipse打开jsp文件出现Error的解决办法
今天正在忙着写项目,在打开一个项目内的jsp文件时发现我亲爱的代码消失了. 最后从网上找到了解决办法,希望可以帮到有需要的人,也作为个人记录 第一步:找到安装路径MyEclipse\configura ...
- Spring Boot连接MySQL报错“Internal Server Error”的解决办法
报错信息如下: {timestamp: "2018-06-14T03:48:23.436+0000", status: 500, error: "Internal Ser ...
- xp操作系统下配置iis,出现了server application error的解决办法
在网上搜索了很多解决办法,最后发现一个差不多的: Server Application Error The server has encountered an error while loading ...
- There was an internal API error.的解决办法
1.当安装应用到4s时,偶尔有些程序会报这个错误,There was an internal API error 解决办法如下: 真机运行下,项目在iOS8.0下运行正常,但是一旦换到iOS7.0和7 ...
- VC error LNK2005 解决办法
error LNK2005: "int __cdecl VerifyVMR9(void)" (?VerifyVMR9@@YAHXZ) 解决办法 在 属性->配置属性-> ...
- iOS 提交审核报错 ERROR ITMS-90087解决办法
ERROR ITMS-: "Unsupported Architectures. The executable for yht.temp_caseinsensitive_rename.app ...
- Odoo8出现Internal Server Error的解决办法之一
转载地址:http://blog.sina.com.cn/s/blog_7cb52fa80102vaf3.html 问题: 不知怎么回事,我的Odoo8出错了,重装也一样出错信息如下 Inte ...
随机推荐
- ASP.NET MVC 视图(五)
ASP.NET MVC 视图(五) 前言 上篇讲解了视图中的分段概念.和分部视图的使用,本篇将会对Razor的基础语法简洁的说明一下,前面的很多篇幅中都有涉及到视图的调用,其中用了很多视图辅助器,也就 ...
- 正确地编写Objective-C中的便捷方法
在Objective-C中,如果某个类方法的返回类型就是这个类的实例(例如NSString类中的stringWithFormat:),就可以将这种类方法称为便捷方法(Convenience Metho ...
- 安卓与IOS移动段浏览器视频与音频的问题与总结
1. 安卓.苹果移动浏览器上都不支持html5的视频与音频自动播放 2. 安卓.苹果移动浏览器要支持播放,前提是必须是用户触发的事件 3. 针对这个特殊的问题,代码需要在用户进来第一次屏幕触发中,去创 ...
- HTML基础
HTML指的是超文本标记语言 (Hyper Text Markup Language), HTML不是一种编程语言,而是一种标记语言 (markup language) ,HTML使用标记标签来描述网 ...
- MVC5 网站开发之六 管理员 2、添加、删除、重置密码、修改密码、列表浏览
目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网 ...
- Android随笔之——Android时间、日期相关类和方法
今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...
- SQLServer学习笔记系列1
一.前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习Sqlserver写起,自己本身对数 ...
- Apworks框架实战(五):EasyMemo的领域模型设计
在上一讲中,我们已经新建了一个聚合根对象Account,并已经可以开始设计领域模型了.在这一讲中,我们会着重介绍EasyMemo领域模型的分析和设计,并引入Visual Studio Ultimate ...
- Entity Framework 教程——安装Entity Framework环境
安装Entity Framework环境 Entity Framework 5.0 API分布在两个地方,一个可在NuGet包管理器中找到,一个存在于.NET framework中..NET fram ...
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目 目录索引
索引 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(1)搭建MVC环境 注册区域 [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(2)创建 ...