2010.4.2日晚-2010.4.3下午:

需要开发个小程序,用到了java 调用dll库。

dll我用delphi开发,其中涉及到处理xml文档.此dll在delphi开发环境下测试通过,可一在java环境中调用,则jvm崩溃.

为解决此问题

,从2010.4.2日下午一直干到2010.4.3日清晨4:00,未解决,在无比郁闷中沉沉睡去。

起床已是4.3日10:00点,隐约醒来,想着未解决的问题,继续郁闷,再睡不着,于是起床继续。

由java调用dll,程序又不报异常,直接由jvm崩溃,无法调试,导致我几乎崩溃。

在我崩溃前最后几秒(2010.4.3

13:49),忽然灵光一闪,想到delphi操作xml文档,前后必加

CoInitialize(nil);

......

coUnInitialize();

是不是此原因呢?

再看delphi代码,果然,在调测dll用的例子中,我加了此两句,但在dll本身中未加此两句,所以用delphi本身的测试用例无问题,一到java中就出问题,于是把此两句加在dll操作xml相关位置。再次运行java,......pass,ok!!!!!

狂喜中!!!

反思开发过程:明知delphi操作xml需加CoInitialize(nil),coUnInitialize(),却又未充分认识它,导致时间浪费了整整一天,还茶不思饭不想。

jvm崩溃日志如下:

#

# A fatal error has been detected by the Java Runtime

Environment:

#

# Internal Error (0xeedfade), pid=5580, tid=3132

#

# JRE version: 6.0_18-b07

# Java VM: Java HotSpot(TM) Client VM (16.0-b13 mixed mode

windows-x86 )

# Problematic frame:

# C [kernel32.dll+0x3fbae]

#

# 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.

#

--------------- T H R E A D ---------------

Current thread (0x0237ac00): JavaThread "main" [_thread_in_native,

id=3132, stack(0x00a80000,0x00ad0000)]

siginfo: ExceptionCode=0xeedfade, ExceptionInformation=0x04ddca7d

0x04fd1684 0x800401f0 0x04ddca7d 0x04fd1598 0x00abf92c

0x00abf8f8

Registers:

EAX=0x00abf874, EBX=0x800401f0, ECX=0x00000007,

EDX=0x00000000

ESP=0x00abf874, EBP=0x00abf8c4, ESI=0x04ddca7d,

EDI=0x04fd1598

EIP=0x766ffbae, EFLAGS=0x00000216

Top of Stack: (sp=0x00abf874)

0x00abf874: 0eedfade 00000001 00000000 766ffbae

0x00abf884: 00000007 04ddca7d 04fd1684 800401f0

0x00abf894: 04ddca7d 04fd1598 00abf92c 00abf8f8

0x00abf8a4: 04dcd5f6 00000000 04dcd60c 04db33fe

0x00abf8b4: 00000001 04dcd634 00abf8f8 04db33c5

0x00abf8c4: 00abf92c 04ddca7d 0eedfade 00000001

0x00abf8d4: 00000007 00abf8dc 04ddca7d 04fd1684

0x00abf8e4: 800401f0 04ddca7d 04fd1598 00abf92c

Instructions: (pc=0x766ffbae)

0x766ffb9e: a9 00 00 83 c4 0c 8d 45 b0 50 ff 15 14 17 6c 76

0x766ffbae: c9 c2 10 00 90 90 90 90 90 8b ff 55 8b ec 51 51

Stack: [0x00a80000,0x00ad0000], sp=0x00abf874, free

space=fe00abf3d4k

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code,

C=native code)

C [kernel32.dll+0x3fbae]

C [insureDll.dll+0x2ca7d]

C [insureDll.dll+0x5a9f]

C [insureDll.dll+0x2c6b1]

C [insureDll.dll+0x3417b]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM

code)

j org.xvolks.jnative.JNative.nInvoke(I)V+0

j org.xvolks.jnative.JNative.invoke()V+55

j

insure.HospitalDll.get_GlobalParam(Ljava/lang/String;)Ljava/lang/String;+59

j insure.HospitalDll.main([Ljava/lang/String;)V+203

v ~StubRoutines::call_stub

--------------- P R O C E S S ---------------

Java Threads: ( => current thread )

0x02469400 JavaThread "Low Memory Detector" daemon

[_thread_blocked, id=3904, stack(0x04710000,0x04760000)]

0x02467000 JavaThread "CompilerThread0" daemon [_thread_blocked,

id=5708, stack(0x046c0000,0x04710000)]

0x02453c00 JavaThread "JDWP Command Reader" daemon

[_thread_in_native, id=3936, stack(0x04670000,0x046c0000)]

0x02452c00 JavaThread "JDWP Event Helper Thread" daemon

[_thread_blocked, id=1448, stack(0x04620000,0x04670000)]

0x02450000 JavaThread "JDWP Transport Listener: dt_shmem" daemon

[_thread_blocked, id=4408, stack(0x045d0000,0x04620000)]

0x02420800 JavaThread "Attach Listener" daemon [_thread_blocked,

id=1868, stack(0x04580000,0x045d0000)]

0x0241d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked,

id=6024, stack(0x04530000,0x04580000)]

0x0240e800 JavaThread "Finalizer" daemon [_thread_blocked, id=6100,

stack(0x02300000,0x02350000)]

0x02409c00 JavaThread "Reference Handler" daemon [_thread_blocked,

id=5136, stack(0x00bd0000,0x00c20000)]

=>0x0237ac00 JavaThread "main" [_thread_in_native,

id=3132, stack(0x00a80000,0x00ad0000)]

Other Threads:

0x02406400 VMThread [stack: 0x00ad0000,0x00b20000] [id=5956]

0x0246cc00 WatcherThread [stack: 0x04760000,0x047b0000]

[id=3940]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap

def new generation total 4928K, used 1029K [0x10010000, 0x10560000,

0x15560000)

eden space 4416K, 23% used [0x10010000, 0x10111620,

0x10460000)

from space 512K, 0% used [0x10460000, 0x10460000, 0x104e0000)

to space 512K, 0% used [0x104e0000, 0x104e0000, 0x10560000)

tenured generation total 10944K, used 0K [0x15560000, 0x16010000,

0x20010000)

the space 10944K, 0% used [0x15560000, 0x15560000, 0x15560200,

0x16010000)

compacting perm gen total 12288K, used 2383K [0x20010000,

0x20c10000, 0x24010000)

the space 12288K, 19% used [0x20010000, 0x20263e60, 0x20264000,

0x20c10000)

No shared spaces configured.

Dynamic libraries:

0x00400000 - 0x00424000 D:\Java\jdk1.6.0\bin\java.exe

0x77c50000 - 0x77d77000 C:\Windows\system32\ntdll.dll

0x766c0000 - 0x7679c000 C:\Windows\system32\kernel32.dll

0x76300000 - 0x763c6000 C:\Windows\system32\ADVAPI32.dll

0x76aa0000 - 0x76b63000 C:\Windows\system32\RPCRT4.dll

0x72850000 - 0x7286e000 C:\Windows\system32\ShimEng.dll

0x76160000 - 0x7618c000 C:\Windows\system32\apphelp.dll

0x6efe0000 - 0x6f068000 C:\Windows\AppPatch\AcLayers.DLL

0x76d50000 - 0x76ded000 C:\Windows\system32\USER32.dll

0x77dd0000 - 0x77e1b000 C:\Windows\system32\GDI32.dll

0x76ee0000 - 0x779f0000 C:\Windows\system32\SHELL32.dll

0x769f0000 - 0x76a9a000 C:\Windows\system32\msvcrt.dll

0x77e20000 - 0x77e79000 C:\Windows\system32\SHLWAPI.dll

0x76b70000 - 0x76cb5000 C:\Windows\system32\ole32.dll

0x76cc0000 - 0x76d4d000 C:\Windows\system32\OLEAUT32.dll

0x761b0000 - 0x761ce000 C:\Windows\system32\USERENV.dll

0x76190000 - 0x761a4000 C:\Windows\system32\Secur32.dll

0x73510000 - 0x73552000 C:\Windows\system32\WINSPOOL.DRV

0x75b80000 - 0x75b94000 C:\Windows\system32\MPR.dll

0x763d0000 - 0x763ee000 C:\Windows\system32\IMM32.DLL

0x77b80000 - 0x77c48000 C:\Windows\system32\MSCTF.dll

0x76470000 - 0x76479000 C:\Windows\system32\LPK.DLL

0x768e0000 - 0x7695d000 C:\Windows\system32\USP10.dll

0x10000000 - 0x10010000

C:\PROGRA~1\KASPER~1\KASPER~1.0FO\r3hook.dll

0x76260000 - 0x76267000 C:\Windows\system32\PSAPI.DLL

0x75d90000 - 0x75f2e000

C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18005_none_5cb72f96088b0de0\comctl32.dll

0x7c340000 - 0x7c396000 D:\Java\jdk1.6.0\jre\bin\msvcr71.dll

0x6d8b0000 - 0x6db47000

D:\Java\jdk1.6.0\jre\bin\client\jvm.dll

0x74b50000 - 0x74b82000 C:\Windows\system32\WINMM.dll

0x74b10000 - 0x74b4d000 C:\Windows\system32\OLEACC.dll

0x6d860000 - 0x6d86c000 D:\Java\jdk1.6.0\jre\bin\verify.dll

0x6d3e0000 - 0x6d3ff000 D:\Java\jdk1.6.0\jre\bin\java.dll

0x6d340000 - 0x6d348000 D:\Java\jdk1.6.0\jre\bin\hpi.dll

0x6d430000 - 0x6d459000 D:\Java\jdk1.6.0\jre\bin\jdwp.dll

0x6d750000 - 0x6d756000 D:\Java\jdk1.6.0\jre\bin\npt.dll

0x6d8a0000 - 0x6d8af000 D:\Java\jdk1.6.0\jre\bin\zip.dll

0x6d2a0000 - 0x6d2a8000 D:\Java\jdk1.6.0\jre\bin\dt_shmem.dll

0x66c40000 - 0x66c61000 D:\insure_XT\insurext\JNativeCpp.dll

0x04db0000 - 0x04df1000 D:\insure_XT\insurext\insureDll.dll

0x00390000 - 0x0039b000 D:\Borland\Delphi7\Bin\borlndmm.dll

0x72c40000 - 0x72c47000 C:\Windows\system32\wsock32.dll

0x77e80000 - 0x77ead000 C:\Windows\system32\WS2_32.dll

0x77dc0000 - 0x77dc6000 C:\Windows\system32\NSI.dll

0x00a40000 - 0x00a6d000 C:\Windows\system32\Mwic_32.dll

VM Arguments:

jvm_args: -Xdebug -Xrunjdwp:transport=dt_shmem,address=javadebug

-Dfile.encoding=UTF-8 -Djava.security.policy=applet.policy

java_command: insure.HospitalDll

Launcher Type: SUN_STANDARD

Environment Variables:

JAVA_HOME=D:\Java\jdk1.6.0

PATH=D:\Java\jdk1.6.0\bin;D:\MinGW\bin;D:\Borland\Delphi7\Bin;D:\Borland\Delphi7\Projects\Bpl\;D:\oracle\lx\product\11.1.0\client_1\bin;D:\JavaFX\javafx-sdk1.2\bin;D:\JavaFX\javafx-sdk1.2\emulator\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program

Files\Diskeeper Corporation\Diskeeper\;C:\Program Files\Common

Files\Lenovo;C:\Program Files\ThinkPad\ConnectUtilities;C:\Program

Files\Lenovo\Client Security Solution;C:\Program Files\Common

Files\Thunder Network\KanKan\Codecs;d:\Sybase\SQL Anywhere

8\win32;d:\Sybase\Shared\win32;d:\Sybase\Shared\Sybase Central

4.1;d:\Sybase\PowerDynamo\win32;d:\StormII\Codec;d:\StormII

USERNAME=lx

OS=Windows_NT

PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 13,

GenuineIntel

--------------- S Y S T E M ---------------

OS: Windows Vista Build 6002 Service Pack 2

CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 15

stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3

Memory: 4k page, physical 3118628k(1031708k free), swap

6447840k(4033784k free)

vm_info: Java HotSpot(TM) Client VM (16.0-b13) for windows-x86 JRE

(1.6.0_18-b07), built on Dec 17 2009 13:35:55 by "java_re" with MS

VC++ 7.1 (VS2003)

time: Sat Apr 03 12:52:39 2010

elapsed time: 16 seconds

java delphi dll文件_一个java调用delphi写的dll问题,郁闷了一天一晚解决相关推荐

  1. java jna调用dll文件_关于java jna调用dll的问题

    public interface User32 extends StdCallLibrary { User32 INSTANCE = (User32)Native.loadLibrary(" ...

  2. java 流 复制文件_【Java】使用字节流复制文件

    其实用java程序复制文件并不难 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOE ...

  3. 一个java类可以有_一个.java文件中可以有几个同级类?

    1.在一个.java文件中可以有多个同级类(和public一样的位置,注意不是内部类).其修饰符只可以public/abstract/final/和无修饰符,不能是其他的protected/priva ...

  4. java 导出mdb文件_使用Java创建Access数据库文件(.mdb或.accdb)

    Jackcess 2.x的更新:现在使用DatabaseBuilder创建(或打开)数据库,因此要创建一个新的数据库文件,我们这样做 import java.io.File; import java. ...

  5. java string最大长度_一个Java字符串中到底有多少个字符?

    作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...

  6. java有几大对象_一个 Java 对象到底有多大?

    阅读本文大概需要 2.8 分钟. 出处:http://u6.gg/swLPg 编写 Java 代码的时候,大多数情况下,我们很少关注一个 Java 对象究竟有多大(占据多少内存),更多的是关注业务与逻 ...

  7. java背单词软件_一个JAVA写的背单词程序

    一个JAVA写的背单词程序 2007-6-9文字大小:大中小 俺看了一些Java, 写个程序出来玩玩.由于界面是用Jbuilder生成的,可能代码比较乱,而且还没合起来. 目前版本是0.00001 / ...

  8. java 读取ppt文件_解析Java的InputStream类并借助其读取ppt文件

    1. 关于InputStream.read()     在从数据流里读取数据时,为图简单,经常用InputStream.read()方法.这个方法是从流里每次只读取读取一个字节,效率会非常低.     ...

  9. java恶作剧小程序_一个Java恶搞小程序

    运用Java程序控制某个应用程序的运行(以网易云音乐为例),步骤如下 1.建立bat文件分别是start.bat(控制程序的运行)和kill.bat(控制程序的结束): start.bat 的内容如下 ...

  10. java 读取 远程文件_利用JAVA获取远程文件及使用断点续传 供学习者使用

    闲来没事,就做做,程序还是要多写才好@ 原理不说,文件方面及I/O方面,去BAIDU一下就知道,断点续传的原理也很简单,就是在原来已经下载的基础之上继续下载就可以了,用到了这么关键的一句:urlc.s ...

最新文章

  1. IOS成长之路-NSMutableURLRequest实现Post请求
  2. 并发基础(三): java线程优先级小试牛刀
  3. Linux安全手册(转载)
  4. MATLAB生成正弦波
  5. 手写分页 个人感觉还能优化,甚至抽象出来,需要高手讲解
  6. “开发者的面试完全是无稽之谈”
  7. 自学python需要安装什么-初学 Python 需要安装哪些软件?
  8. EXCEL 2010学习笔记—— 动态图表
  9. 99se.PCB技术大全
  10. 微信小程序上传图片到服务器总是失败_微信小程序上传图片到服务器实例
  11. Android启动优化--异步优化
  12. 【翻译】Ionic的刷新器-Refresher官方文档翻译
  13. 快速实现M5311NBIOT MQTT通信
  14. 【产品】项目管理的五个过程和九大知识领域
  15. 只是浅谈MS SQL Server的Page Splits运作原理
  16. 【Unity】【PC】【错误上报】Bug上报插件 Trello Bug Tracker 使用介绍 (一):用户上报部分
  17. USB设备仿真框架设计指南——4.DSF中的COM对象
  18. 在经营景城网过程中对alax排名的一些思考
  19. C语言 正序分解整数
  20. 【音视频开发】音频相关概念 - 总结

热门文章

  1. mac怎么无线打印机连接到服务器,Mac上wifi打印机怎么用 wifi打印机连接使用教程...
  2. eTerm放大/PID放大软件众多,如何选择
  3. lwj_C#_泛型使用
  4. Python爬虫:对Uniqlo、Zara、HM等快销品牌的门店数量作统计并展示
  5. 搜狗微信公众号文章反爬虫完美攻克
  6. word字间距怎么调整成一样的【word教程】
  7. (转)Notepad++删除空白行
  8. python类方法重写和重载的区别_python 重载和重写的区别
  9. Matlab的数据导入和导出
  10. 如何快速找到微信支付的商户号和商户密钥?望相互转告!