Tomcat启动报A fatal error has been detected by the Java Runtime Environment

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00002ba9d88e02da, pid=17844, tid=1076017472
#
# JRE version: 6.0_29-b11
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.4-b02 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libc.so.6+0x732da]  short+0x3a
#
# An error report file with more information is saved as:
# /home/iptv/bss/apache-tomcat-6.0.26/bin/hs_err_pid17844.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp

#



问题的原因就在于 显示JIT在做编译优化的时候处理 某个方法时出错。
本利的错误是这个方法

Java代码   收藏代码
  1. org.hibernate.cfg.annotations.SimpleValueBinder.setType  


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

在jvm启动参数中添加启动参数
Java代码   收藏代码
  1. -XX:CompileCommand=exclude,org/hibernate/cfg/annotations/SimpleValueBinder,setType  

如果是 eclipse下启动服务,则在eclipse-preference-java-installed jres 里面设置,
在 defalt vm arguments 填入上面的代码就可以了。


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


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

在Default VM Arguments中加入:

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

这句就可以了,确实加入就可以了,但是怎么感觉有点莫名其妙呢,也没说出错的原因,哪位碰到过,这个问题到底是由什么原因造成的呢?

补充:

    加上这句话后,启动tomcat的时候,控制台输出了这样的字样:


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: JNA是Java Native Access的缩写,是一种Java的库,用于访问操作系统本地功能的接口。当我们使用JNA时,有时候会遇到由Java运行时环境检测到的致命错误。 这种错误通常表示在使用JNA时,Java运行时环境发现了一个严重的问题,导致程序无法继续执行。这些错误通常与操作系统的兼容性问题、库文件的版本不匹配或者内存溢出等有关。 要解决这个问题,可以尝试以下几个方法: 1. 检查JNA的版本:确保使用的JNA版本与操作系统和其他依赖的库文件版本是兼容的。可以尝试升级或降级JNA版本来解决兼容性问题。 2. 检查库文件:确保所使用的库文件与JNA版本和操作系统兼容。确保库文件没有损坏或者缺失。 3. 增加内存:如果错误是由于内存溢出引起的,可以尝试增加Java虚拟机的内存限制。可以通过修改JVM参数来增加内存限制。 4. 调试错误:使用调试工具来分析错误的原因。可以使用Java的调试工具、日志记录或打印错误信息,以帮助定位问题所在。 5. 尝试其他解决方案:如果以上方法都无法解决问题,可以尝试使用其他类似的库或者其他方式实现所需的功能。 希望以上方法能够帮助解决使用JNA时出现的致命错误。 ### 回答2: 该错误是由Java运行时环境检测到的致命错误。它通常发生在Java应用程序运行过程中,可能由于多种原因导致。一些常见的原因可能包括:内存问题、编码问题、依赖项冲突或损坏等。 首先,内存问题可能是导致此错误的原因之一。如果应用程序使用的内存超过了Java虚拟机(JVM)设置的最大内存限制,则可能会引发致命错误。这可能需要重新评估应用程序的内存需求并相应地调整JVM的内存设置。 其次,编码问题可能导致此错误。如果应用程序中存在错误的代码或代码逻辑错误,可能会导致运行时错误。在这种情况下,需要对代码进行仔细检查和调试,以查找并修复潜在的问题。 依赖项冲突或损坏也可能是导致该错误的原因。如果应用程序的依赖项之间存在冲突或其中一个依赖项已损坏,则可能会导致运行时错误。在这种情况下,可能需要重新安装或更新相关的依赖项,并确保它们与应用程序的版本兼容。 解决这个问题的方法包括:查看错误的详细信息和堆栈跟踪,以了解具体的错误原因;检查应用程序的内存使用情况,以确保不超过JVM设置的最大内存限制;审查应用程序的代码并进行调试,查找潜在的编码问题;检查应用程序的依赖项并确保它们与应用程序兼容和完整。 总之,JNA a fatal error has been detected by the Java runtime environment错误是Java应用程序运行过程中的致命错误,可能由内存问题、编码问题、依赖项冲突或损坏等原因导致。解决该错误需要仔细检查和调试应用程序,同时对相关的配置和依赖项进行评估和修复。 ### 回答3: "jna a fatal error has been detected by the java runtime environment" 是Java运行时环境检测到致命错误的异常信息。 当程序在运行过程中出现无法恢复的错误时,Java运行时环境会告此异常信息。这个错误可能包含有关错误的详细信息,例如错误的原因、导致错误的代码行和错误发生的时间。这种错误可能会导致程序崩溃或无法正常运行。 出现这种错误的原因可能是多方面的,例如内存溢出、资源不足、文件损坏等等。解决此问题的方法也因问题的具体原因而异。 首先,我们可以检查程序的内存使用情况。如果发现程序在运行过程中占用过多内存,可能需要优化代码或增加系统内存。可以使用Java内存分析工具来识别内存泄漏或者大对象的存在。 其次,我们可以检查代码中是否存在资源未释放的问题。例如文件、数据库连接等资源应该在使用完后及时释放。可以使用try-finally或try-with-resources语句块来确保资源的正确关闭。 最后,如果程序依赖于某个外部库或框架,可以尝试升级或修复该库的版本。有时候错误可能是由于库的bug引起的,升级到新的版本可能会修复这些问题。 总之,解决"jna a fatal error has been detected by the java runtime environment"的错误需要仔细分析错误信息和排查相关代码,并针对具体问题采取相应的解决措施。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值