java 调用 pb dll_[转载]一个java调用delphi写的dll问题,郁闷了一天一晚解决
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:Javajdk1.6.0binjava.exe
0x77c50000 - 0x77d77000 C:Windowssystem32ntdll.dll
0x766c0000 - 0x7679c000 C:Windowssystem32kernel32.dll
0x76300000 - 0x763c6000 C:Windowssystem32ADVAPI32.dll
0x76aa0000 - 0x76b63000 C:Windowssystem32RPCRT4.dll
0x72850000 - 0x7286e000 C:Windowssystem32ShimEng.dll
0x76160000 - 0x7618c000 C:Windowssystem32apphelp.dll
0x6efe0000 - 0x6f068000 C:WindowsAppPatchAcLayers.DLL
0x76d50000 - 0x76ded000 C:Windowssystem32USER32.dll
0x77dd0000 - 0x77e1b000 C:Windowssystem32GDI32.dll
0x76ee0000 - 0x779f0000 C:Windowssystem32SHELL32.dll
0x769f0000 - 0x76a9a000 C:Windowssystem32msvcrt.dll
0x77e20000 - 0x77e79000 C:Windowssystem32SHLWAPI.dll
0x76b70000 - 0x76cb5000 C:Windowssystem32ole32.dll
0x76cc0000 - 0x76d4d000 C:Windowssystem32OLEAUT32.dll
0x761b0000 - 0x761ce000 C:Windowssystem32USERENV.dll
0x76190000 - 0x761a4000 C:Windowssystem32Secur32.dll
0x73510000 - 0x73552000 C:Windowssystem32WINSPOOL.DRV
0x75b80000 - 0x75b94000 C:Windowssystem32MPR.dll
0x763d0000 - 0x763ee000 C:Windowssystem32IMM32.DLL
0x77b80000 - 0x77c48000 C:Windowssystem32MSCTF.dll
0x76470000 - 0x76479000 C:Windowssystem32LPK.DLL
0x768e0000 - 0x7695d000 C:Windowssystem32USP10.dll
0x10000000 - 0x10010000
C:PROGRA~1KASPER~1KASPER~1.0FOr3hook.dll
0x76260000 - 0x76267000 C:Windowssystem32PSAPI.DLL
0x75d90000 - 0x75f2e000
C:WindowsWinSxSx86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18005_none_5cb72f96088b0de0comctl32.dll
0x7c340000 - 0x7c396000 D:Javajdk1.6.0jrebinmsvcr71.dll
0x6d8b0000 - 0x6db47000
D:Javajdk1.6.0jrebinclientjvm.dll
0x74b50000 - 0x74b82000 C:Windowssystem32WINMM.dll
0x74b10000 - 0x74b4d000 C:Windowssystem32OLEACC.dll
0x6d860000 - 0x6d86c000 D:Javajdk1.6.0jrebinverify.dll
0x6d3e0000 - 0x6d3ff000 D:Javajdk1.6.0jrebinjava.dll
0x6d340000 - 0x6d348000 D:Javajdk1.6.0jrebinhpi.dll
0x6d430000 - 0x6d459000 D:Javajdk1.6.0jrebinjdwp.dll
0x6d750000 - 0x6d756000 D:Javajdk1.6.0jrebinnpt.dll
0x6d8a0000 - 0x6d8af000 D:Javajdk1.6.0jrebinzip.dll
0x6d2a0000 - 0x6d2a8000 D:Javajdk1.6.0jrebindt_shmem.dll
0x66c40000 - 0x66c61000 D:insure_XTinsurextJNativeCpp.dll
0x04db0000 - 0x04df1000 D:insure_XTinsurextinsureDll.dll
0x00390000 - 0x0039b000 D:BorlandDelphi7Binborlndmm.dll
0x72c40000 - 0x72c47000 C:Windowssystem32wsock32.dll
0x77e80000 - 0x77ead000 C:Windowssystem32WS2_32.dll
0x77dc0000 - 0x77dc6000 C:Windowssystem32NSI.dll
0x00a40000 - 0x00a6d000 C:Windowssystem32Mwic_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:Javajdk1.6.0
PATH=D:Javajdk1.6.0bin;D:MinGWbin;D:BorlandDelphi7Bin;D:BorlandDelphi7ProjectsBpl;D:oraclelxproduct11.1.0client_1bin;D:JavaFXjavafx-sdk1.2bin;D:JavaFXjavafx-sdk1.2emulatorbin;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:Program
FilesDiskeeper CorporationDiskeeper;C:Program FilesCommon
FilesLenovo;C:Program FilesThinkPadConnectUtilities;C:Program
FilesLenovoClient Security Solution;C:Program FilesCommon
FilesThunder NetworkKanKanCodecs;d:SybaseSQL Anywhere
8win32;d:SybaseSharedwin32;d:SybaseSharedSybase Central
4.1;d:SybasePowerDynamowin32;d:StormIICodec;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 调用 pb dll_[转载]一个java调用delphi写的dll问题,郁闷了一天一晚解决相关推荐
- 第一个java程序的错误_我是一名java初学者,执行第一个java程序welcome.java出现了以下错误,这是为什么?...
我是一名java初学者,执行第一个java程序welcome.java出现了以下错误,这是为什么? welcome.java: import javax.swing.*; public class w ...
- 一个java类可以有_一个.java文件中可以有几个同级类?
1.在一个.java文件中可以有多个同级类(和public一样的位置,注意不是内部类).其修饰符只可以public/abstract/final/和无修饰符,不能是其他的protected/priva ...
- java接口自动化demo_第一个java 接口自动化程序
第一个Java实现的接口测试 御都 字数 1065 · 阅读 0 2019-04-09 08:14 一.背景 使用HttpClient框架提交一个post&get申请,并对打印出返回值和状态码 ...
- 【Java】我的第一个 JAVA 程序:Hello,world!
Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式 ...
- java 包含汉字,【转载】Java判断字符串中是不是包含汉字
[转载]Java判断字符串中是否包含汉字 import java.util.regex.Matcher; import java.util.regex.Pattern; public class If ...
- 如何创建第一个java程序_创建第一个java程序
开发环境:ubuntu 10.04 + eclipse 方法一:打开eclipse编译器,选择 File->New->Java project,输入工程名称,点击finish,在工程目录中 ...
- java string最大长度_一个Java字符串中到底有多少个字符?
作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...
- 小汤学编程之JAVA基础day01——JAVA基本概念、第一个JAVA程序
一.JAVA的概念 1.名字的由来 2.java之父 3.java的分类 4.虚拟机跨平台原理 二.第一个JAVA程序 1.编译环境 2.环境变量 3.用黑 ...
- 一个java程序_从另一个java程序运行java程序
我正在研究一个简单的java程序.它只是编译并执行另一个java程序.我正在使用Runtime.exec()函数进行编译和运行.编译没有问题.但是当它运行时,如果第二个程序需要输入来从键盘读取,我不能 ...
- java有几大对象_一个 Java 对象到底有多大?
阅读本文大概需要 2.8 分钟. 出处:http://u6.gg/swLPg 编写 Java 代码的时候,大多数情况下,我们很少关注一个 Java 对象究竟有多大(占据多少内存),更多的是关注业务与逻 ...
最新文章
- 「Python」socket指南
- 键盘流的逆袭- Idea 中使用 VIM mode 提高生成效率
- 深入 Adobe Reader 保护模式 —— 第一部分 —— 设计
- ASP.NET AJAX Programmer's Reference : with ASP.NET 2.0 or ASP.NET 3.5
- 由帧内8x8预测到MBAFF时相邻块的推导
- 机顶盒改成无线打印服务器,【当贝市场】如何将网络机顶盒改装成无线路由器...
- 一键清理C盘垃圾文件,让你的电脑运行飞起
- 修改Linux系统最大TCP连接数限制
- 一文彻底搞懂加密、数字签名和数字证书,看不懂你打我!
- 恩格玛密码机的工作原理
- 【历史上的今天】12 月 21 日:Ruby 语言问世;玛雅预言世界末日;计算机先驱诞生日
- 去掉网页从网页中拷贝到word中段落带有的背景颜色
- Python 正则re模块之compile()和findall()详解
- 利用html5画出五角星画出星空
- 如何处理高并发和单点故障
- I am a boy!
- 神经网络按结构可以分为,神经网络主要包括哪些
- 安卓设置keychain_IOS的keychain的三种使用方法
- 渝北统景碑口规划开发_渝北区御临河碑口水库主体工程开工建设
- R包——maftools可视化神器
热门文章
- 英语基础语法学习笔记 0
- 亚马逊防关联方法适合shopee平台吗?
- matlab的提示符,在 MATLAB 命令窗口中的“ ”标志为 MATLAB 的 的提示符,“│”标志为 提示符。...
- #低码系列#如何设计一个低代码平台?
- c语言中pinMode的作用,Arduino C语言的基本结构
- 【屏幕适配】像素密度 分辨率 dp px的关系
- 二叉树求解前序序列、中序序列、后序序列
- Xilinx FPGA平台DDR3设计保姆式教程(2)DDR3各时钟频率及带宽分析
- Alibaba微服务组件Nacos单机+集群配置 prometheus+grafana监控配置及注册中心实战【收获满满】
- matlab fig图片读取,从Matlab .fig文件中读取数据,并重新绘图