利用JNA,java调用c的dll动态连库异常。当调用dll时候tomcat立马自动关闭出现以下东东。请大侠给解释是什么原因,我从未见到过地。。怎么解决呀。。
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0cbc5e9d, pid=1496, tid=4088
#
# Java VM: Java HotSpot(TM) Client VM (11.3-b02 mixed mode windows-x86)
# Problematic frame:
# C  [modify_sfile.dll+0x5e9d]
#
# An error report file with more information is saved as:
# E:\Tomcat5.5\bin\hs_err_pid1496.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

解决方案 »

  1.   

    提问的智慧
    http://community.csdn.net/IndexPage/SmartQuestion.aspx
      

  2.   

     晕 是我说的不够清楚吗?利用JNA技术,用java调用c的xx.dll动态库,当java代码执行到调用xx.dll的 代码时候,tomcat立马自动关闭出现以上面哪些乱七八糟看不懂的 带 # 的东西。不知道还要想知道什么啊 。。这样说吧我就是想知道 这段带#的一大断 是什么东西?
      

  3.   

    是dll中发送了非法地址访问了。通常是你在调用dll的方法时传递的参数不对。
      

  4.   

    厉害。。我也测试发现,当不传参数时候会成功执行。可是我传的参数必须是现在的2个不然根本就不符合要求了那我就可以下结论不是我的问题,是dll的问题了,是他们的参数设置有问题和java的不符。
    或许有更好的解释,请高人指点一二呀
      

  5.   

    JVM冲突?要不你更新JVM试试 可能是版本问题跟C有不兼容的地方
      

  6.   

    我单个 写了一个就好用的啊为什么换个dll就不可以了呢。
      

  7.   

    这是JVM(java虚拟机)崩溃了,一般原因是你的这个JNA调用动态库出现内存泄漏的问题,虽然还可能是其他问题,但是很少出现的,你自己检查下这个动态库是不是什么东西没有关闭导致内存泄漏的!
      

  8.   

    补充:java调用c的动态库出现这个问题很正常,我现在做的项目就要和c打交道,每次出现JVM崩溃都是c的动态库的问题,建议你重点放在动态库上,另外,你可以用debuge调试,看看到底是执行哪行语句出现的JVM崩溃,如果是你调用c的动态库的语句崩溃的,那么不用怀疑,就是c的动态库引起的,c的动态库有内存泄漏的问题,如果用java调用,一点内存问题就会引起JVM崩溃,这是我的经验之谈!