java jni实现jieba c++库的java调用

本文介绍了如何使用Java Native Interface (JNI) 封装C++的jieba分词库,以便在Java中调用。详细步骤包括编写Java代码,生成JNI头文件,下载jieba C++源码,实现C++方法,并在Linux环境下编译生成.so动态库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上一直没有java调用c++的jieba分词,最近自己项目需求,做了一下简单的封装,经过本人实际测试可用,中间会有差别,欢迎留言,我会尽量解答。

1,编写java代码,java代码如下

import java.util.Arrays;
import java.util.Map;

public class JiebaForJava {

    /**
     * cut word
     * @param content
     * @param isHmm CUT WITH OR NOT HMM
     * @return
     */
    public native String[] cut(String content,boolean isHmm);

    /**
     *
     * @param content
     * @return
     */
    public native String[] cutAll(String content);

    /**
     *
     * @param content
     * @return
     */
    public native String[] cutForSearch(String content);

    /**
     *
     * @param content
     */
    public native void insertUserWord(String content);

    /**
     *
     * @param content
     * @return
     */
    public native Map<String,String> tag(String content);


    /**
     *
     * @param path
     */
    public native void loadUserDict(String path);



    public static void main(String[] args) {
        System.load("/home/spark/Desktop/cppjieba-master/test/JiebaForJava.so");
        JiebaForJava demo = new JiebaForJava();
        System.out.println(Arrays.toString(demo.cut("他来到了网易杭研大厦",true)));

        System.out.println(Arrays.toString(demo.cutAll("我来到北京清华大学")));
        System.out.println(Arrays.toString(demo.cutForSearch("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")));

        System.out.println(Arrays.toString(demo.cut("男默女泪",true)));

        demo.insertUserWord("男默女泪");
        System.out.println(Arrays.toString(demo.cut("男默女泪",true)));


        Map<String, String> tag = demo.tag("我是拖拉机学院手扶拖拉机专业的。不用多久,我就会升职加薪,当上CEO,走上人生巅峰。");


        for(Map.Entry entry:tag.entrySet()){
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
        demo.loadUserDict("/home/spar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值