java調用so文件


java調用so文件:

先看頭文件:

確定類,必須保持一致(包括路徑:com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS)

確定需要調用的方法(例如globalInitFull,返回值為boolean):

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS */

#ifndef _Included_com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS
#define _Included_com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS
 * Method:    globalInit 全局初始化
 * Args:      inferenceDir    jstring Inference的路徑如"C:/Inference"
 * Args:      threadCount   jint    線程數
 * Signature: ()V
 */
JNIEXPORT jboolean JNICALL Java_com_tracker_common_business_jobUserTag_contentTags_service_ContentTagsServiceSS_globalInitFull
(JNIEnv *, jobject, jstring, jint, jstring);

編寫對應的java類:

package com.tracker.common.business.jobUserTag.contentTags.service;

import com.google.common.collect.Maps;
import com.tracker.common.business.contentTags.model.entity.RsmDataEntity;
import com.tracker.common.data.dao.HBaseDao;
import com.tracker.common.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

public class ContentTagsServiceSS {
    private static final Logger LOG = LoggerFactory.getLogger(ContentTagsServiceSS.class);
    public native boolean globalInitFull(String initFilePath, int threadNumber, String logpath);
    public native String getCVLabels(String input);
    public native void globalCloseFull(String initFilePath, String logpath);
    
    
    private final String EMPTYTAGS = StringUtil.STRING_2 + 0 + StringUtil.STRING_2;
    public static AtomicInteger errorCount = new AtomicInteger(0);

    public ContentTagsServiceSS(String initPath,int maxThreadNum,String logPath){
        System.load(initPath+"/SemanticLabel.so");
        globalInitFull(initPath,maxThreadNum,logPath);
    }

    public void close(String initPath,String logPath){
        globalCloseFull(initPath,logPath);
    }
}

這樣的話,就搞定了一個so文件對應的相關映射類。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM