聲明:ICTCLAS以及我修改ICTCLAS JNI For Java的版權均歸原作者所有,未經原作者允許,請勿作其它商業用途
首先下載ICTCLAS Beta版本公開源代碼:點擊下載
我使用的是Visual studio 2005開發環境,源碼使用VC6開發的,現在把這個工程轉移到VS2005下。我使用的方法比較笨,基本上是屬于體力+暴力型的,不過自己覺得爽就可以了
在VS2005里新建Win32項目FREEICTCLAS,在application Settings選項里選中Dll和Empty Project,然后新建以下過濾器(New Filter),并且將原項目的源碼及其目錄結構copy到現在的win32項目的目錄下(過濾器和項目目錄示意圖)
示意圖(點擊前面+號展開)
這樣這個win32工程基本就建完了。
觀察ICTCLAS源代碼后編寫以下帶有native聲明的方法的java類,只實現了頭兩個方法,第三個暫未實現,與ICTCLAS接口基本保持一致
代碼如下:
FreeICTCLAS.java(點擊+展開)
然后在命令行輸入Javac FreeICTCLAS.java編譯FreeICTCLAS.java
生成FreeICTCLAS.class文件后,再使用javah FreeICTCLAS生成FreeICTCLAS.h,代碼如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class FreeICTCLAS */

#ifndef _Included_FreeICTCLAS
#define _Included_FreeICTCLAS
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: FreeICTCLAS
* Method: FreeICTCLAS_Init
* Signature: (II)Z
*/
JNIEXPORT jboolean JNICALL Java_FreeICTCLAS_FreeICTCLAS_1Init
(JNIEnv *, jobject, jint, jint);

/*
* Class: FreeICTCLAS
* Method: FreeICTCLAS_ParagraphProcess
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_FreeICTCLAS_FreeICTCLAS_1ParagraphProcess
(JNIEnv *, jobject, jstring);

/*
* Class: FreeICTCLAS
* Method: FreeICTCLAS_FileProcess
* Signature: (Ljava/lang/String;Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_FreeICTCLAS_FreeICTCLAS_1FileProcess
(JNIEnv *, jobject, jstring, jstring);

#ifdef __cplusplus
}
#endif
#endif
將FreeICTCLAS.h拷貝到win32項目所在目錄中,再將其添加到項目中,接下來就是編寫FreeICTCLAS.cpp實現頭文件里方法
主要代碼如下:
#include "FreeICTCLAS.h"
#include "util.h"
#include "globeVar.h"
#include <string.h>
#include <stdlib.h>
/*
* Class: FreeICTCLAS
* Method: FreeICTCLAS_Init
* Signature: (II)Z
*/
JNIEXPORT jboolean JNICALL Java_FreeICTCLAS_FreeICTCLAS_1Init
(JNIEnv *env, jobject obj, jint OperateType, jint OutputFormat)
{
m_ICTCLAS.m_nOperateType = OperateType;
m_ICTCLAS.m_nOutputFormat = OutputFormat;
return JNI_TRUE;
}
/*
* Class: FreeICTCLAS
* Method: FreeICTCLAS_ParagraphProcess
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_FreeICTCLAS_FreeICTCLAS_1ParagraphProcess
(JNIEnv *env, jobject obj, jstring sParagraph)
{
char *sResult,*sSource;
sSource = jstringTochar(env, sParagraph);
if(m_ICTCLAS.m_nOutputFormat!=2)
sResult=new char [(strlen(sSource)+13)*3];
else
sResult=new char [(strlen(sSource)+13)*50];
if(!m_ICTCLAS.ParagraphProcessing(sSource,sResult))
exit(1);
else
return chartoJstring(env,sResult);
}
/*
* Class: FreeICTCLAS
* Method: FreeICTCLAS_FileProcess
* Signature: (Ljava/lang/String;Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_FreeICTCLAS_FreeICTCLAS_1FileProcess
(JNIEnv *env, jobject obj, jstring sSourceFilename, jstring sResultFilename)
{
return JNI_TRUE;
}
編譯項目,在release目錄中找到FreeICTCLAS.dll,將其拷貝到FreeICTCLAS.class所在的目錄中
現在運行java FreeICTCLAS即可看到中文分詞的結果啦
怎么把ICTCLAS JNI for Java添加到eclipse項目中去?下次寫吧。
當你看到這句話的時候,你可以直接發郵件向我索要win32項目和eclipse項目
BlogJava后臺編輯器不好用,^_^
首先下載ICTCLAS Beta版本公開源代碼:點擊下載
我使用的是Visual studio 2005開發環境,源碼使用VC6開發的,現在把這個工程轉移到VS2005下。我使用的方法比較笨,基本上是屬于體力+暴力型的,不過自己覺得爽就可以了
在VS2005里新建Win32項目FREEICTCLAS,在application Settings選項里選中Dll和Empty Project,然后新建以下過濾器(New Filter),并且將原項目的源碼及其目錄結構copy到現在的win32項目的目錄下(過濾器和項目目錄示意圖)

這樣這個win32工程基本就建完了。
觀察ICTCLAS源代碼后編寫以下帶有native聲明的方法的java類,只實現了頭兩個方法,第三個暫未實現,與ICTCLAS接口基本保持一致
代碼如下:

生成FreeICTCLAS.class文件后,再使用javah FreeICTCLAS生成FreeICTCLAS.h,代碼如下:






































主要代碼如下:















































編譯項目,在release目錄中找到FreeICTCLAS.dll,將其拷貝到FreeICTCLAS.class所在的目錄中
現在運行java FreeICTCLAS即可看到中文分詞的結果啦
怎么把ICTCLAS JNI for Java添加到eclipse項目中去?下次寫吧。
當你看到這句話的時候,你可以直接發郵件向我索要win32項目和eclipse項目
BlogJava后臺編輯器不好用,^_^