A fatal error has been detected by the Java Runtime Environment

        Tomcat启动:A fatal error has been detected by the Java Runtime Environment(JVM Crash分析及相关资料)       

        分类:            服务器 1255人阅读 评论(2) 收藏 举报

iLife's 博客http://blog.csdn.net/fei1502816


2013年1月10号注:

今天更新代码之后,突然出现一个问题:Tomcat启动时,总是会出现jvm fatal error错误导致tomcat无法正常启动,以下是错误信息:

  1. # A fatal error has been detected by the Java Runtime Environment: 
  2. #  Internal Error (c1_Optimizer.cpp:271), pid=6048, tid=5404 
  3. #  guarantee(x_compare_res != Constant::not_comparable) failed: incomparable constants in IfOp 
  4. # JRE version: 6.0_29-b11 
  5. # Java VM: Java HotSpot(TM) Client VM (20.4-b02 mixed mode windows-x86 ) 
  6. 2013-01-10 13:47:34,671 INFO  hibernate.cfg.AnnotationBinder:419  -> Binding entity from annotated class: com.estone.www.spis.model.po.zd.sys.DPossession 
  7. 2013-01-10 13:47:34,671 INFO  cfg.annotations.EntityBinder:422  -> Bind entity com.estone.www.spis.model.po.zd.sys.DPossession on table d_possession 
  8. 2013-01-10 13:47:34,671 INFO  hibernate.cfg.AnnotationBinder:419  -> Binding entity from annotated class: com.estone.www.spis.model.po.zd.writ.DWritTemplate 
  9. 2013-01-10 13:47:34,671 INFO  cfg.annotations.EntityBinder:422  -> Bind entity com.estone.www.spis.model.po.zd.writ.DWritTemplate on table d_writ_template 
  10. 2013-01-10 13:47:34,671 INFO  hibernate.cfg.AnnotationBinder:419  -> Binding entity from annotated class: com.estone.www.spis.model.po.zd.writ.DWritType 
  11. 2013-01-10 13:47:34,671 INFO  cfg.annotations.EntityBinder:422  -> Bind entity com.estone.www.spis.model.po.zd.writ.DWritType on table d_writ_type 
  12. # An error report file with more information is saved as: 
  13. # D:\Program Files\apache-tomcat-6.0.20\bin\hs_err_pid6048.log 
  14. # If you would like to submit a bug report, please visit: 
  15. #   http://java.sun.com/webapps/bugreport/crash.jsp 
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (c1_Optimizer.cpp:271), pid=6048, tid=5404
#  guarantee(x_compare_res != Constant::not_comparable) failed: incomparable constants in IfOp
#
# JRE version: 6.0_29-b11
# Java VM: Java HotSpot(TM) Client VM (20.4-b02 mixed mode windows-x86 )
2013-01-10 13:47:34,671 INFO  hibernate.cfg.AnnotationBinder:419  -> Binding entity from annotated class: com.estone.www.spis.model.po.zd.sys.DPossession
2013-01-10 13:47:34,671 INFO  cfg.annotations.EntityBinder:422  -> Bind entity com.estone.www.spis.model.po.zd.sys.DPossession on table d_possession
2013-01-10 13:47:34,671 INFO  hibernate.cfg.AnnotationBinder:419  -> Binding entity from annotated class: com.estone.www.spis.model.po.zd.writ.DWritTemplate
2013-01-10 13:47:34,671 INFO  cfg.annotations.EntityBinder:422  -> Bind entity com.estone.www.spis.model.po.zd.writ.DWritTemplate on table d_writ_template
2013-01-10 13:47:34,671 INFO  hibernate.cfg.AnnotationBinder:419  -> Binding entity from annotated class: com.estone.www.spis.model.po.zd.writ.DWritType
2013-01-10 13:47:34,671 INFO  cfg.annotations.EntityBinder:422  -> Bind entity com.estone.www.spis.model.po.zd.writ.DWritType on table d_writ_type
# An error report file with more information is saved as:
# D:\Program Files\apache-tomcat-6.0.20\bin\hs_err_pid6048.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

在网上搜寻好久,终于找到了类似错误,网上解释归结于:JIT在做编译优化的时候处理时出错,可能是触发了JVM的编译器的BUG导致的。幸好SUN(Oracle)提供了相关的文档说明,得以让我们解决了这个问题。
文档地址:http://www.oracle.com/technetwork/java/javase/crashes-137240.html#gbyzu

在这里,导致本次错误的是这个方法:

  1. org.hibernate.cfg.annotations.SimpleValueBinder.setType 
org.hibernate.cfg.annotations.SimpleValueBinder.setType

解决办法:让jvm跳过该方法的编译优化

1.如果是eclipse下启动服务,则在myeclipse-preference-java-installed jres 里面设置, 在 defalt vm arguments 填入下边的代码就可以了!如图:

代码:

  1. -XX:CompileCommand=exclude,org/hibernate/cfg/annotations/SimpleValueBinder,setType 
-XX:CompileCommand=exclude,org/hibernate/cfg/annotations/SimpleValueBinder,setType

选择使用的JRE,,点击编辑edit

上边代码粘贴到此处,OK


2.如果是直接通过startup 启动tomcat,则需要修改以下文件 Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh找到

  1. set JAVA_OPTS=%JAVA_OPTS%  %LOGGING_CONFIG%   
set JAVA_OPTS=%JAVA_OPTS%  %LOGGING_CONFIG%  
修改为以下内容即可:

  1. set JAVA_OPTS=%JAVA_OPTS% -XX:CompileCommand=exclude,org/hibernate/cfg/annotations/SimpleValueBinder,setType %LOGGING_CONFIG% 
set JAVA_OPTS=%JAVA_OPTS% -XX:CompileCommand=exclude,org/hibernate/cfg/annotations/SimpleValueBinder,setType %LOGGING_CONFIG%
如图:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值