为什么我在JAVA里调DLL就不行呢?

marcovanbasten 2005-11-16 03:45:02
我用的是jawin调用dll的,布署在weblogic中,但有时调用dll的时候weblogic会退出,打出大概如下的错误:
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x77eaa114
Function name=WideCharToMultiByte
Library=C:\WINNT\system32\KERNEL32.DLL

Current Java thread:
at org.jawin.marshal.SharedStubs.invokeIGGI_I(Native Method)
at org.jawin.FuncPtr.invoke(FuncPtr.java:173)
at gov.sat.tax.fwsk.cb.JmHZData.doJm(JmHZData.java:92)
at gov.sat.tax.fwsk.cb.YccbServlet.perform(YccbServlet.java:176)
at gov.sat.tax.fwsk.cb.YccbServlet.doPost(YccbServlet.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1058)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:401)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:306)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:5445)
at weblogic.security.service.SecurityServiceManager.runAs(SecurityServic
eManager.java:780)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:3105)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2588)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)

Dynamic libraries:
0x00400000 - 0x00405000 d:\bea\jdk131_06\bin\java.exe
0x77F80000 - 0x77FFD000 C:\WINNT\system32\ntdll.dll
0x796D0000 - 0x79732000 C:\WINNT\system32\ADVAPI32.dll
0x77E60000 - 0x77F32000 C:\WINNT\system32\KERNEL32.DLL
0x786F0000 - 0x78761000 C:\WINNT\system32\RPCRT4.DLL
0x78000000 - 0x78045000 C:\WINNT\system32\MSVCRT.dll
0x6D420000 - 0x6D4F9000 d:\bea\jdk131_06\jre\bin\hotspot\jvm.dll
0x77DF0000 - 0x77E4F000 C:\WINNT\system32\USER32.dll
0x77F40000 - 0x77F7B000 C:\WINNT\system32\GDI32.dll
0x77530000 - 0x77560000 C:\WINNT\system32\WINMM.dll
0x75E00000 - 0x75E1A000 C:\WINNT\system32\IMM32.DLL
0x6C330000 - 0x6C338000 C:\WINNT\system32\LPK.DLL
0x65D20000 - 0x65D74000 C:\WINNT\system32\USP10.dll
0x6D220000 - 0x6D227000 d:\bea\jdk131_06\jre\bin\hpi.dll
0x6D3B0000 - 0x6D3BD000 d:\bea\jdk131_06\jre\bin\verify.dll
0x6D250000 - 0x6D266000 d:\bea\jdk131_06\jre\bin\java.dll
0x6D3C0000 - 0x6D3CD000 d:\bea\jdk131_06\jre\bin\zip.dll
0x6D340000 - 0x6D348000 D:\bea\jdk131_06\jre\bin\net.dll
0x74FD0000 - 0x74FDA000 C:\WINNT\system32\WSOCK32.dll
0x74FB0000 - 0x74FC4000 C:\WINNT\system32\WS2_32.DLL
0x74FA0000 - 0x74FA8000 C:\WINNT\system32\WS2HELP.DLL
0x77800000 - 0x7780C000 C:\WINNT\System32\rnr20.dll
0x77960000 - 0x77984000 C:\WINNT\system32\DNSAPI.DLL
0x77300000 - 0x77313000 C:\WINNT\system32\iphlpapi.dll
0x774E0000 - 0x774E5000 C:\WINNT\system32\ICMP.DLL
0x772E0000 - 0x772F7000 C:\WINNT\system32\MPRAPI.DLL
0x750E0000 - 0x750EF000 C:\WINNT\system32\SAMLIB.DLL
0x75100000 - 0x7514F000 C:\WINNT\system32\NETAPI32.DLL
0x797B0000 - 0x797BF000 C:\WINNT\system32\Secur32.dll
0x77BD0000 - 0x77BE1000 C:\WINNT\system32\NTDSAPI.dll
0x77930000 - 0x7795A000 C:\WINNT\system32\WLDAP32.DLL
0x75150000 - 0x75156000 C:\WINNT\system32\NETRAP.dll
0x77A30000 - 0x77B1F000 C:\WINNT\system32\OLE32.DLL
0x77990000 - 0x77A2B000 C:\WINNT\system32\OLEAUT32.DLL
0x77370000 - 0x7739F000 C:\WINNT\system32\ACTIVEDS.DLL
0x77340000 - 0x77363000 C:\WINNT\system32\ADSLDPC.DLL
0x777F0000 - 0x777FE000 C:\WINNT\system32\RTUTILS.DLL
0x6D990000 - 0x6DA3C000 C:\WINNT\system32\SETUPAPI.DLL
0x794D0000 - 0x79531000 C:\WINNT\system32\USERENV.DLL
0x774A0000 - 0x774D3000 C:\WINNT\system32\RASAPI32.DLL
0x77480000 - 0x77491000 C:\WINNT\system32\RASMAN.DLL
0x774F0000 - 0x77512000 C:\WINNT\system32\TAPI32.DLL
0x71780000 - 0x7180A000 C:\WINNT\system32\COMCTL32.DLL
0x63180000 - 0x631E4000 C:\WINNT\system32\SHLWAPI.DLL
0x77320000 - 0x77339000 C:\WINNT\system32\DHCPCSVC.DLL
0x777A0000 - 0x777A8000 C:\WINNT\System32\winrnr.dll
0x777B0000 - 0x777B5000 C:\WINNT\system32\rasadhlp.dll
0x12950000 - 0x12955000 D:\bea\weblogic700\server\bin\filelock.dll
0x6D240000 - 0x6D246000 D:\bea\jdk131_06\jre\bin\ioser12.dll
0x74F50000 - 0x74F6E000 C:\WINNT\system32\msafd.dll
0x74F90000 - 0x74F97000 C:\WINNT\System32\wshtcpip.dll
0x131A0000 - 0x131D1000 C:\WINNT\system32\jawin.dll
0x13230000 - 0x13242000 c:\work\yccb\jsapix.dll
0x13420000 - 0x13427000 D:\bea\weblogic700\server\bin\md5.dll
0x78080000 - 0x78095000 C:\WINNT\system32\MSVCRT40.dll
0x780A0000 - 0x780B2000 C:\WINNT\system32\MSVCIRT.dll
0x13430000 - 0x13435000 D:\bea\weblogic700\server\bin\wlntio.dll
0x77900000 - 0x77923000 C:\WINNT\system32\imagehlp.dll
0x72960000 - 0x7298D000 C:\WINNT\system32\DBGHELP.dll
0x687E0000 - 0x687EB000 C:\WINNT\system32\PSAPI.DLL

Local Time = Tue Jun 13 16:18:29 2006
Elapsed Time = 1060
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.3.1_06-b01 mixed mode)
#
# An error report file has been saved as hs_err_pid3384.log.
# Please refer to the file for further information.
#

d:\bea\user_projects\gscpp>ENDLOCAL

d:\bea\user_projects\gscpp>ENDLOCAL

d:\bea\user_projects\gscpp>

这是为什么呢?频率不定,有的时候能成功几次,有的时候一重启WEBLOGIC就会出这样的问题。求助啊……
...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
marcovanbasten 2005-11-18
  • 打赏
  • 举报
回复
这个JAWIN在使用的过程中有什么注意事项吗?我自认为没什么问题,用的都是它提供的接口,怎么还会老退出。奇怪的是,有的机器WEBLOGIC退出的概率非常高,有的就非常低,烦死了。
另外如果自己写,有没有详细点的例子让我看看?谢谢了。
liu_you 2005-11-16
  • 打赏
  • 举报
回复
在JAVA类型和C类型转换时出了错?
WideCharToMultiByte
jxdn_yang 2005-11-16
  • 打赏
  • 举报
回复
JAWIN调用DLL蛮好用的....是不是DLL被其他程序用呢??我猜的
libin53 2005-11-16
  • 打赏
  • 举报
回复
weblogic 退出是必然,这个打的错误是说jvm错误,但是事实不是这样的,之前我也
有这样的错误,你首先你要保证你jawin中的dll要对,最好能放在,system32或者jre/bin里面。
我最后也是搞不定jawin,最后自己写jni来调dll,感觉更容易控制自己的程序,因为都是自己写的,那个jawin妈的东西太多啦

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧