1. 在使用中科院汉语分词系统ICTCLAS2009共享版(JAVA)的过程中,你可能会遇到这样的问题提示:
#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x03f75b46, pid=2872, tid=3132
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode, sharing)
# Problematic frame:
# C 0x03f75b46
#
# 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 (0x002e6400): JavaThread "main" [_thread_in_native, id=3132]
siginfo: ExceptionCode=0xc0000005, reading address 0xffffffff
Registers:
EAX=0x0093009b, EBX=0x00000000, ECX=0x03ee5658, EDX=0x00000000
ESP=0x0093fc28, EBP=0x03f75b38, ESI=0x00000000, EDI=0x00c260ac
EIP=0x03f75b46, EFLAGS=0x00010282
Top of Stack: (sp=0x0093fc28)
0x0093fc28: 1000269a 00000001 26a2d330 26a2d330
0x0093fc38: 100031e5 0097a460 002e64e8 0093fc88
0x0093fc48: 22ee9e28 00000009 00000000 0093fc4c
0x0093fc58: 0093fc58 00000000 0093fc88 26a2e7f8
0x0093fc68: 00000000 26a2d330 00000000 0093fc88
0x0093fc78: 0093fcac 00972e9d 00000000 00978400
0x0093fc88: 22ee6e38 0093fc8c 26a2c29c 0093fcd0
0x0093fc98: 26a2dcd8 00000000 26a2c330 0093fc88
Instructions: (pc=0x03f75b46)
0x03f75b36: 08 03 18 57 f7 03 50 37 95 03 38 d5 08 99 34 c3
0x03f75b46: 2e c0 08 00 03 00 81 01 08 03 90 0f 19 04 00 d5
Stack: [0x008f0000,0x00940000), sp=0x0093fc28, free space=319k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C 0x03f75b46
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j ICTCLAS.I3S.AC.ICTCLAS30.ICTCLAS_Exit()Z+0
j ICTCLASUsage.TestICTCLAS30.boostupSegmentationByFileName()V+156
j ICTCLASUsage.TestICTCLAS30.main([Ljava/lang/String;)V+7
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x02b13400 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3012]
0x02b11c00 JavaThread "CompilerThread0" daemon [_thread_blocked, id=1672]
0x02b11000 JavaThread "Attach Listener" daemon [_thread_blocked, id=3532]
0x02b1b400 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2036]
0x02ad1c00 JavaThread "Finalizer" daemon [_thread_blocked, id=3196]
0x02acd800 JavaThread "Reference Handler" daemon [_thread_blocked, id=2120]
=>0x002e6400 JavaThread "main" [_thread_in_native, id=3132]
Other Threads:
0x02ac4400 VMThread [id=1484]
0x02b14c00 WatcherThread [id=2632]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 960K, used 662K [0x229d0000, 0x22ad0000, 0x22eb0000)
eden space 896K, 72% used [0x229d0000, 0x22a73420, 0x22ab0000)
from space 64K, 15% used [0x22ac0000, 0x22ac2720, 0x22ad0000)
to space 64K, 0% used [0x22ab0000, 0x22ab0000, 0x22ac0000)
tenured generation total 4096K, used 1883K [0x22eb0000, 0x232b0000, 0x269d0000)
the space 4096K, 45% used [0x22eb0000, 0x23086cb0, 0x23086e00, 0x232b0000)
compacting perm gen total 12288K, used 530K [0x269d0000, 0x275d0000, 0x2a9d0000)
the space 12288K, 4% used [0x269d0000, 0x26a54a40, 0x26a54c00, 0x275d0000)
ro space 8192K, 66% used [0x2a9d0000, 0x2af19920, 0x2af19a00, 0x2b1d0000)
rw space 12288K, 52% used [0x2b1d0000, 0x2b816130, 0x2b816200, 0x2bdd0000)
Dynamic libraries:
0x00400000 - 0x00423000 C:/Program Files/Java/jdk1.6.0/jre/bin/java.exe
0x7c920000 - 0x7c9b6000 C:/WINDOWS/system32/ntdll.dll
0x7c800000 - 0x7c91d000 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
0x7c340000 - 0x7c396000 C:/Program Files/Java/jdk1.6.0/jre/bin/msvcr71.dll
0x6d7c0000 - 0x6da07000 C:/Program Files/Java/jdk1.6.0/jre/bin/client/jvm.dll
0x77d10000 - 0x77d9f000 C:/WINDOWS/system32/USER32.dll
0x77ef0000 - 0x77f38000 C:/WINDOWS/system32/GDI32.dll
0x76b10000 - 0x76b3a000 C:/WINDOWS/system32/WINMM.dll
0x76300000 - 0x7631d000 C:/WINDOWS/system32/IMM32.DLL
0x62c20000 - 0x62c29000 C:/WINDOWS/system32/LPK.DLL
0x73fa0000 - 0x7400b000 C:/WINDOWS/system32/USP10.dll
0x77be0000 - 0x77c38000 C:/WINDOWS/system32/msvcrt.dll
0x5dba0000 - 0x5dba8000 C:/WINDOWS/system32/rdpsnd.dll
0x762d0000 - 0x762e0000 C:/WINDOWS/system32/WINSTA.dll
0x5fdd0000 - 0x5fe24000 C:/WINDOWS/system32/NETAPI32.dll
0x76bc0000 - 0x76bcb000 C:/WINDOWS/system32/PSAPI.DLL
0x6d310000 - 0x6d318000 C:/Program Files/Java/jdk1.6.0/jre/bin/hpi.dll
0x6d770000 - 0x6d77c000 C:/Program Files/Java/jdk1.6.0/jre/bin/verify.dll
0x6d3b0000 - 0x6d3cf000 C:/Program Files/Java/jdk1.6.0/jre/bin/java.dll
0x6d7b0000 - 0x6d7bf000 C:/Program Files/Java/jdk1.6.0/jre/bin/zip.dll
0x10000000 - 0x10043000 C:/Program Files/Java/jdk1.6.0/bin/ICTCLAS30.dll
0x77f40000 - 0x77fb6000 C:/WINDOWS/system32/SHLWAPI.dll
0x74be0000 - 0x74c0c000 C:/WINDOWS/system32/OLEACC.dll
0x75ff0000 - 0x76055000 C:/WINDOWS/system32/MSVCP60.dll
0x76990000 - 0x76acd000 C:/WINDOWS/system32/ole32.dll
0x770f0000 - 0x7717b000 C:/WINDOWS/system32/OLEAUT32.dll
0x72f70000 - 0x72f96000 C:/WINDOWS/system32/WINSPOOL.DRV
VM Arguments:
java_command: ICTCLASUsage.TestICTCLAS30
Launcher Type: SUN_STANDARD
Environment Variables:
CLASSPATH=.;C:/Program Files/Java/jdk1.6.0/lib;
PATH=C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;C:/Program Files/Common Files/Thunder Network/KanKan/Codecs;C:/Program Files/Common Files/TTKN/Bin;C:/Program Files/Java/jdk1.6.0/bin;C:/Program Files/Microsoft Visual Studio/Common/Tools/WinNT;C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin;C:/Program Files/Microsoft Visual Studio/Common/Tools;C:/Program Files/Microsoft Visual Studio/VC98/bin;C:/Program Files/IDM Computer Solutions/UltraEdit/
USERNAME=Administrator
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 7, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows XP Build 2600 Service Pack 2
CPU:total 2 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht
Memory: 4k page, physical 1046568k(382264k free), swap 2517840k(1885872k free)
vm_info: Java HotSpot(TM) Client VM (1.6.0-b105) for windows-x86, built on Nov 29 2006 00:48:48 by "java_re" with unknown MS VC++:1310
这个具体的是根本原因我也不清楚,主要是使用JNI带来的问题。遇到这个问题时,你要回到ICTCLAS_Init()和ICTCLAS_Exit()方法里面,看是不是在调用完ICTCLAS_Init(),使用了ICTCLAS其他方法后,是否最终调用了ICTCLAS_Exit()方法。总之,ICTCLAS_Init()和ICTCLAS_Exit()方法是配对使用的,不要在还没调用ICTCLAS_Exit()这个方法就又出现一个ICTCLAS_Init()方法。
2.在使用testICTCLAS30.ICTCLAS_FileProcess(sSrcFilename.getBytes("gb2312"), sDestFilename.getBytes("gb2312"), 1)这个方法时,我注意到如果你的文件路径或者文件名出现错误,甚至在不存在所索引的文件时,系统也不会报错的,系统是会正常运行,但没有得到期望的结果。所以在调用类似的方法时,如果遇到上述的情形,请你查看一下你的文件名或者文件路径是否正确。