下边是报错信息,因为对C++不是很了解,底层理解不透看不出问题出在哪里,各位大侠们能帮我一下吗?#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d9e1288, pid=3324, tid=1420
#
# Java VM: Java HotSpot(TM) Client VM (11.0-b15 mixed mode, sharing windows-x86)
# Problematic frame:
# V [jvm.dll+0x131288]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#--------------- T H R E A D ---------------Current thread (0x00846c00): JavaThread "main" [_thread_in_vm, id=1420, stack(0x008d0000,0x00920000)]siginfo: ExceptionCode=0xc0000005, reading address 0x59454b4cRegisters:
EAX=0x59454b48, EBX=0x00000000, ECX=0x008475c4, EDX=0x0091fb38
ESP=0x0091fb2c, EBP=0x0084759c, ESI=0x00846c00, EDI=0x0084759c
EIP=0x6d9e1288, EFLAGS=0x00010206Top of Stack: (sp=0x0091fb2c)
0x0091fb2c: 008475a0 00846c00 000000b6 008475c4
0x0091fb3c: 008475c0 008475bc 008475b8 6d9e13e1
0x0091fb4c: 0091fba4 0084759c 008475a0 00000d00
0x0091fb5c: 00846c00 6d977a89 0091fba4 0084759c
0x0091fb6c: 008475a0 00000d00 000000b6 00846c00
0x0091fb7c: 00846c00 2aa31b8c 0091fc10 000000b6
0x0091fb8c: 00846c00 00846c00 00847500 00847180
0x0091fb9c: 00847188 00847574 00000000 00000000 Instructions: (pc=0x6d9e1288)
0x6d9e1278: 4a 57 8b 7c 24 24 3b fb 75 04 33 c0 eb 05 8b 07
0x6d9e1288: 8b 40 04 50 56 8d 4c 24 38 e8 6a 8c ee ff 8b 4c
Stack: [0x008d0000,0x00920000], sp=0x0091fb2c, free space=318k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x131288]Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j java.io.Writer.write(Ljava/lang/String;)V+4
j java.io.PrintStream.write(Ljava/lang/String;)V+13
j java.io.PrintStream.print(Ljava/lang/String;)V+9
j java.io.PrintStream.println(Ljava/lang/String;)V+6
j org.gw.core.Test.main([Ljava/lang/String;)V+29
v ~StubRoutines::call_stub--------------- P R O C E S S ---------------Java Threads: ( => current thread )
0x02b02400 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3032, stack(0x02d70000,0x02dc0000)]
0x02af8800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3088, stack(0x02d20000,0x02d70000)]
0x02af7000 JavaThread "Attach Listener" daemon [_thread_blocked, id=3468, stack(0x02cd0000,0x02d20000)]
0x02b01800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=4012, stack(0x02c80000,0x02cd0000)]
0x02ab4000 JavaThread "Finalizer" daemon [_thread_blocked, id=2160, stack(0x02c30000,0x02c80000)]
0x02aaf400 JavaThread "Reference Handler" daemon [_thread_blocked, id=1312, stack(0x02be0000,0x02c30000)]
=>0x00846c00 JavaThread "main" [_thread_in_vm, id=1420, stack(0x008d0000,0x00920000)]Other Threads:
0x02aadc00 VMThread [stack: 0x02b90000,0x02be0000] [id=3216]
0x02b0c000 WatcherThread [stack: 0x02dc0000,0x02e10000] [id=1676]VM state:not at safepoint (normal execution)VM Mutex/Monitor currently owned by a thread: NoneHeap
def new generation total 960K, used 236K [0x229e0000, 0x22ae0000, 0x22ec0000)
eden space 896K, 26% used [0x229e0000, 0x22a1b130, 0x22ac0000)
from space 64K, 0% used [0x22ac0000, 0x22ac0000, 0x22ad0000)
to space 64K, 0% used [0x22ad0000, 0x22ad0000, 0x22ae0000)
tenured generation total 4096K, used 0K [0x22ec0000, 0x232c0000, 0x269e0000)
the space 4096K, 0% used [0x22ec0000, 0x22ec0000, 0x22ec0200, 0x232c0000)
compacting perm gen total 12288K, used 369K [0x269e0000, 0x275e0000, 0x2a9e0000)
the space 12288K, 3% used [0x269e0000, 0x26a3c4a0, 0x26a3c600, 0x275e0000)
ro space 8192K, 67% used [0x2a9e0000, 0x2af42f30, 0x2af43000, 0x2b1e0000)
rw space 12288K, 53% used [0x2b1e0000, 0x2b850180, 0x2b850200, 0x2bde0000)Dynamic libraries:
0x00400000 - 0x00424000 C:\Program Files\Java\jdk1.6.0_10\bin\javaw.exe
0x7c920000 - 0x7c9b3000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c91e000 C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e49000 C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee2000 C:\WINDOWS\system32\RPCRT4.dll
0x77fc0000 - 0x77fd1000 C:\WINDOWS\system32\Secur32.dll
0x77d10000 - 0x77da0000 C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f39000 C:\WINDOWS\system32\GDI32.dll
0x76300000 - 0x7631d000 C:\WINDOWS\system32\IMM32.DLL
0x62c20000 - 0x62c29000 C:\WINDOWS\system32\LPK.DLL
0x73fa0000 - 0x7400b000 C:\WINDOWS\system32\USP10.dll
0x7c340000 - 0x7c396000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\msvcr71.dll
0x6d8b0000 - 0x6db06000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\client\jvm.dll
0x76b10000 - 0x76b3a000 C:\WINDOWS\system32\WINMM.dll
0x6d330000 - 0x6d338000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\hpi.dll
0x76bc0000 - 0x76bcb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d860000 - 0x6d86c000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\verify.dll
0x6d3d0000 - 0x6d3ef000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\java.dll
0x6d8a0000 - 0x6d8af000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\zip.dll
0x10000000 - 0x10007000 C:\RegistLoader.dll
0x78520000 - 0x785c3000 C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e\MSVCR90.dllVM Arguments:
java_command: org.gw.core.Test
Launcher Type: SUN_STANDARDEnvironment Variables:
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_14
CLASSPATH=C:\Program Files\Java\jdk1.6.0_10\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar;C:\Program Files\Java\jdk1.6.0_10\bin;C:\util\jmeter/lib/ext/ApacheJMeter_core.jar;C:\util\jmeter/lib/jorphan.jar;JMETER_HOME/lib/logkit-1.2.jar;
PATH=D:\oracle\product\10.2.0\client_2\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.5.0_14\bin;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\WinRAR;C:\Program Files\Java\j2re1.4.1_01\bin;C:\Program Files\Internet Explorer;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\BPL
USERNAME=Admin
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 16 Model 6 Stepping 3, AuthenticAMD--------------- S Y S T E M ---------------OS: Windows XP Build 2600 Service Pack 3CPU:total 2 (2 cores per cpu, 1 threads per core) family 16 model 6 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, mmxext, 3dnow, 3dnowext, sse4aMemory: 4k page, physical 2097151k(1897420k free), swap 4194303k(3703212k free)vm_info: Java HotSpot(TM) Client VM (11.0-b15) for windows-x86 JRE (1.6.0_10-rc2-b32), built on Sep 12 2008 00:52:11 by "java_re" with MS VC++ 7.1time: Mon Aug 26 17:12:01 2013
elapsed time: 0 seconds
javavisual studiojniVC++
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d9e1288, pid=3324, tid=1420
#
# Java VM: Java HotSpot(TM) Client VM (11.0-b15 mixed mode, sharing windows-x86)
# Problematic frame:
# V [jvm.dll+0x131288]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#--------------- T H R E A D ---------------Current thread (0x00846c00): JavaThread "main" [_thread_in_vm, id=1420, stack(0x008d0000,0x00920000)]siginfo: ExceptionCode=0xc0000005, reading address 0x59454b4cRegisters:
EAX=0x59454b48, EBX=0x00000000, ECX=0x008475c4, EDX=0x0091fb38
ESP=0x0091fb2c, EBP=0x0084759c, ESI=0x00846c00, EDI=0x0084759c
EIP=0x6d9e1288, EFLAGS=0x00010206Top of Stack: (sp=0x0091fb2c)
0x0091fb2c: 008475a0 00846c00 000000b6 008475c4
0x0091fb3c: 008475c0 008475bc 008475b8 6d9e13e1
0x0091fb4c: 0091fba4 0084759c 008475a0 00000d00
0x0091fb5c: 00846c00 6d977a89 0091fba4 0084759c
0x0091fb6c: 008475a0 00000d00 000000b6 00846c00
0x0091fb7c: 00846c00 2aa31b8c 0091fc10 000000b6
0x0091fb8c: 00846c00 00846c00 00847500 00847180
0x0091fb9c: 00847188 00847574 00000000 00000000 Instructions: (pc=0x6d9e1288)
0x6d9e1278: 4a 57 8b 7c 24 24 3b fb 75 04 33 c0 eb 05 8b 07
0x6d9e1288: 8b 40 04 50 56 8d 4c 24 38 e8 6a 8c ee ff 8b 4c
Stack: [0x008d0000,0x00920000], sp=0x0091fb2c, free space=318k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x131288]Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j java.io.Writer.write(Ljava/lang/String;)V+4
j java.io.PrintStream.write(Ljava/lang/String;)V+13
j java.io.PrintStream.print(Ljava/lang/String;)V+9
j java.io.PrintStream.println(Ljava/lang/String;)V+6
j org.gw.core.Test.main([Ljava/lang/String;)V+29
v ~StubRoutines::call_stub--------------- P R O C E S S ---------------Java Threads: ( => current thread )
0x02b02400 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3032, stack(0x02d70000,0x02dc0000)]
0x02af8800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3088, stack(0x02d20000,0x02d70000)]
0x02af7000 JavaThread "Attach Listener" daemon [_thread_blocked, id=3468, stack(0x02cd0000,0x02d20000)]
0x02b01800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=4012, stack(0x02c80000,0x02cd0000)]
0x02ab4000 JavaThread "Finalizer" daemon [_thread_blocked, id=2160, stack(0x02c30000,0x02c80000)]
0x02aaf400 JavaThread "Reference Handler" daemon [_thread_blocked, id=1312, stack(0x02be0000,0x02c30000)]
=>0x00846c00 JavaThread "main" [_thread_in_vm, id=1420, stack(0x008d0000,0x00920000)]Other Threads:
0x02aadc00 VMThread [stack: 0x02b90000,0x02be0000] [id=3216]
0x02b0c000 WatcherThread [stack: 0x02dc0000,0x02e10000] [id=1676]VM state:not at safepoint (normal execution)VM Mutex/Monitor currently owned by a thread: NoneHeap
def new generation total 960K, used 236K [0x229e0000, 0x22ae0000, 0x22ec0000)
eden space 896K, 26% used [0x229e0000, 0x22a1b130, 0x22ac0000)
from space 64K, 0% used [0x22ac0000, 0x22ac0000, 0x22ad0000)
to space 64K, 0% used [0x22ad0000, 0x22ad0000, 0x22ae0000)
tenured generation total 4096K, used 0K [0x22ec0000, 0x232c0000, 0x269e0000)
the space 4096K, 0% used [0x22ec0000, 0x22ec0000, 0x22ec0200, 0x232c0000)
compacting perm gen total 12288K, used 369K [0x269e0000, 0x275e0000, 0x2a9e0000)
the space 12288K, 3% used [0x269e0000, 0x26a3c4a0, 0x26a3c600, 0x275e0000)
ro space 8192K, 67% used [0x2a9e0000, 0x2af42f30, 0x2af43000, 0x2b1e0000)
rw space 12288K, 53% used [0x2b1e0000, 0x2b850180, 0x2b850200, 0x2bde0000)Dynamic libraries:
0x00400000 - 0x00424000 C:\Program Files\Java\jdk1.6.0_10\bin\javaw.exe
0x7c920000 - 0x7c9b3000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c91e000 C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e49000 C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee2000 C:\WINDOWS\system32\RPCRT4.dll
0x77fc0000 - 0x77fd1000 C:\WINDOWS\system32\Secur32.dll
0x77d10000 - 0x77da0000 C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f39000 C:\WINDOWS\system32\GDI32.dll
0x76300000 - 0x7631d000 C:\WINDOWS\system32\IMM32.DLL
0x62c20000 - 0x62c29000 C:\WINDOWS\system32\LPK.DLL
0x73fa0000 - 0x7400b000 C:\WINDOWS\system32\USP10.dll
0x7c340000 - 0x7c396000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\msvcr71.dll
0x6d8b0000 - 0x6db06000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\client\jvm.dll
0x76b10000 - 0x76b3a000 C:\WINDOWS\system32\WINMM.dll
0x6d330000 - 0x6d338000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\hpi.dll
0x76bc0000 - 0x76bcb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d860000 - 0x6d86c000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\verify.dll
0x6d3d0000 - 0x6d3ef000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\java.dll
0x6d8a0000 - 0x6d8af000 C:\Program Files\Java\jdk1.6.0_10\jre\bin\zip.dll
0x10000000 - 0x10007000 C:\RegistLoader.dll
0x78520000 - 0x785c3000 C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e\MSVCR90.dllVM Arguments:
java_command: org.gw.core.Test
Launcher Type: SUN_STANDARDEnvironment Variables:
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_14
CLASSPATH=C:\Program Files\Java\jdk1.6.0_10\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar;C:\Program Files\Java\jdk1.6.0_10\bin;C:\util\jmeter/lib/ext/ApacheJMeter_core.jar;C:\util\jmeter/lib/jorphan.jar;JMETER_HOME/lib/logkit-1.2.jar;
PATH=D:\oracle\product\10.2.0\client_2\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.5.0_14\bin;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\WinRAR;C:\Program Files\Java\j2re1.4.1_01\bin;C:\Program Files\Internet Explorer;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\Documents and Settings\All Users\Documents\RAD Studio\7.0\BPL
USERNAME=Admin
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 16 Model 6 Stepping 3, AuthenticAMD--------------- S Y S T E M ---------------OS: Windows XP Build 2600 Service Pack 3CPU:total 2 (2 cores per cpu, 1 threads per core) family 16 model 6 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, mmxext, 3dnow, 3dnowext, sse4aMemory: 4k page, physical 2097151k(1897420k free), swap 4194303k(3703212k free)vm_info: Java HotSpot(TM) Client VM (11.0-b15) for windows-x86 JRE (1.6.0_10-rc2-b32), built on Sep 12 2008 00:52:11 by "java_re" with MS VC++ 7.1time: Mon Aug 26 17:12:01 2013
elapsed time: 0 seconds
javavisual studiojniVC++
/ RegistLoader.cpp : 定义 DLL 应用程序的导出函数。#include "stdafx.h"
#include "RegistLoader.h"
#include <string.h>
#include <windows.h>
#include <winbase.h>
#include <stdio.h>
#include <malloc.h>
#include <atlstr.h>//jstring to char*
char* jstringTostring(JNIEnv* env, jstring jstr)
{
char* rtn = NULL;
jclass clsstring = env->FindClass("java/lang/String");
jstring strencode = env->NewStringUTF("utf-8");
jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray barr= (jbyteArray)env->CallObjectMethod(jstr, mid, strencode);
jsize alen = env->GetArrayLength(barr);
jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE);
if (alen > 0)
{
rtn = (char*)malloc(alen + 1);
memcpy(rtn, ba, alen);
rtn[alen] = 0;
}
env->ReleaseByteArrayElements(barr, ba, 0);
return rtn;
}//JAVA 通过JNI的方式调用C++获取注册表信息
JNIEXPORT jstring JNICALL Java_org_gw_core_RegistLoader_getRegistInfo
(JNIEnv *env, jobject, jstring root, jstring path, jstring key){
HKEY hAppKey;
LPCTSTR WINDS_SERVICE_REGISTRY_KEY = (LPCTSTR)jstringTostring(env,path);
LPCTSTR DATA_FILE_SUB_KEY = (LPCTSTR)jstringTostring(env,key);
char szDataFile[80];
if(jstringTostring(env,root) == "HKEY_LOCAL_MACHINE"){ //HKEY_LOCAL_MACHINE
if(ERROR_SUCCESS == RegOpenKeyEx (HKEY_LOCAL_MACHINE,WINDS_SERVICE_REGISTRY_KEY,0,KEY_READ,&hAppKey)){
ULONG cbSize = MAX_PATH*sizeof(TCHAR);
DWORD dwFlag = RegQueryValueEx (
hAppKey,
DATA_FILE_SUB_KEY,
NULL,
NULL,
(LPBYTE)szDataFile,&cbSize);
RegCloseKey (hAppKey);
if (ERROR_SUCCESS == dwFlag) {
CString strDate=szDataFile;
if(strDate.GetLength()>0){
char *p = (LPSTR)(LPCTSTR)strDate;
return env->NewStringUTF(p);
}
else{
return env->NewStringUTF("");
}
}
}
}
}
* TODO 读取注册表信息
*
* @author guowei [email protected] 2013-80-20
*
*/
public class RegistLoader {
// 注册表的根路径名称
public static String HKEY_CLASSES_ROOT = "HKEY_CLASSES_ROOT";
public static String HKEY_LOCAL_MACHINE = "HKEY_LOCAL_MACHINE";
public static String HKEY_CURRENT_USER = "HKEY_CURRENT_USER";
public static String HKEY_USERS = "HKEY_USERS";
public static String HKEY_CURRENT_CONFIG = "HKEY_CURRENT_CONFIG"; /**
* 读取注册表信息
* @param root 注册表根路径
* @param path 注册表路径
* @param key 注册表键值
* @return 注册表value值
*/
public native String getRegistInfo(String root,String path, String key);
}
引用你上面的:Environment Variables:
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_14
CLASSPATH=C:\Program Files\Java\jdk1.6.0_10\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar;C:\Program Files\Java\jdk1.6.0_10jdk版本不同,建议都使用jdk1.6