2
==编辑==无法在64位Java程序中加载64位DLL
猜测与Lib有关。我使用MsmqJava,它看起来像我调用Queue.sendBytes()时发生错误,但如果我调用Queue.send(Message),它不会。谢谢你的一切。
== == EDITED
我编译为64位(我已经DUMPBIN检查的话)的DLL。
我想运行一个Java程序,使用该库没有成功。 System.getProperty("sun.arch.data.model")
转储64.我已经将该库与其他Java程序一起使用,所以我知道这不是它。它必须是我编译或实例化JVM的方式。任何人都知道可能会发生什么?错误是:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006da48ad7, pid=3208, tid=4868
#
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (19.1-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V [jvm.dll+0x258ad7]
#
# An error report file with more information is saved as:
# hs_err_pid3208.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
我注意到,出于某种原因,真不知道这是否是正常的,JVM试图加载了一堆窗口的32位库:
Dynamic libraries:
0x0000000000400000 - 0x000000000042e000 C:\Windows\system32\java.exe
0x0000000077420000 - 0x00000000775c9000 C:\Windows\SYSTEM32\ntdll.dll
0x0000000077200000 - 0x000000007731f000 C:\Windows\system32\kernel32.dll
0x000007fefd4e0000 - 0x000007fefd54c000 C:\Windows\system32\KERNELBASE.dll
0x000007fefe7e0000 - 0x000007fefe8bb000 C:\Windows\system32\ADVAPI32.dll
0x000007feff090000 - 0x000007feff12f000 C:\Windows\system32\msvcrt.dll
0x000007feff710000 - 0x000007feff72f000 C:\Windows\SYSTEM32\sechost.dll
0x000007feff130000 - 0x000007feff25d000 C:\Windows\system32\RPCRT4.dll
0x000000006d7f0000 - 0x000000006def4000 C:\Program Files\Java\jre6\bin\server\jvm.dll
0x0000000077320000 - 0x000000007741a000 C:\Windows\system32\USER32.dll
0x000007fefd950000 - 0x000007fefd9b7000 C:\Windows\system32\GDI32.dll
我看你使用的AMD.Did你尝试在英特尔64位? – Cratylus
在64位系统上,'system32'中的所有文件都是64位。 32位文件位于“SysWOW64”中,因此该DLL不会尝试加载32位库。责备MS保持命名(包括文件夹名称和文件名中的32),即使文件是64位... –
谢谢。我无法在其他电脑上试用,因为我没有其他电脑。最奇怪的是,我有另一个应用程序,加载得很好,但这个不...我真的越来越紧张... – rpvilao