打造ICTCLAS JNI For Java

声明: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(点击+展开) public class FreeICTCLAS { ///* * 初始化设置取值都是0,1,2 */ public native boolean FreeICTCLAS_Init(int OperateType, int OutputFormat); ///* * 与Free版本中有所不同,返回值为结果 / public native String FreeICTCLAS_ParagraphProcess(String sParagraph); /**// * 与Free版本中基本保持一致 */ public native boolean FreeICTCLAS_FileProcess(String sSourceFilename, String sResultFilename); public static void main(String[] args) { System.loadLibrary(“FreeICTCLAS”); FreeICTCLAS test = new FreeICTCLAS(); test.FreeICTCLAS_Init(0,0); String str = test....

May 6, 2008 · 2 min · Le

JNI技术入门之Hello World篇

毕业设计是做一个中文的XML信息检索系统。当时选题的时候真的是不知道天高地厚,选了这么一个难题,但是毕竟已经选了,那就不要畏缩了!查阅了信息检索的相关资料后,遇到了一个很棘手的问题——中文如何分词?这是个大问题,不知道如何入手。于是查查资料看看有没有现成中文分词系统拿来用,这一找就找到了中科院的ICTCLAS。网上已经有很多的已经封装好了的ICTCLAS.dll,由于毕设打算用Java技术打造一个系统原型,那就需要通过JNI技术来调用ICTCLAS.dll。其实这也已经有人做好了,但是,我还是想知道JNI的个什么样的东西,还想知道如何正确的使用这个技术。 已经习惯了从Hello World开始。 我使用的是JDK_1.6.0和Visual studio 2005,使用Visual studio 2005生成可供Java调用的dll需要做以下设置: 在Visual studio 2005的菜单Tools\options\Projects and Solutions\VC++ Directories,添加JDK安装目录下inlcude和include/win32目录,如下图所示 设置图(点击前面+号展开) 编写带有native声明的方法的java类,代码如下 JniTest.java(点击前面+号展开) public class JniTest{ /*静态块装载JniTest.dll,不用写出后缀名.dll,因为不同平台,系统会自动识别*/ static { System.loadLibrary("JniTest"); } /*native方法申明,不要写具体的实现*/ public native void sayHello(); } 然后在命令行输入Javac JniTest.java编译JniTest.java 生成JniTest.class文件后,再使用javah JniTest生成JniTest.h,代码如下 JniTest.h(点击前面+号展开) /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class JniTest */ #ifndef _Included_JniTest #define _Included_JniTest #ifdef __cplusplus extern "C" { #endif /* * Class: JniTest * Method: sayHello * Signature: ()V */ JNIEXPORT void JNICALL Java_JniTest_sayHello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif 在Visual studio 2005里新建项目Win32 project,在弹出的对话框中点击application setting,然后再选上dll和Empty project。 接着在项目中添加JniTest....

May 5, 2008 · 1 min · Le