zoukankan      html  css  js  c++  java
  • 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文件对应的相关映射类。

  • 相关阅读:
    java 反射 处理 空值
    jquery之data()
    jquery里面的$.each()方法
    Normalize.css 样式作用,及使用方法
    robots.txt、humans.txt、.editorconfig、.gitignore、LICENSE.txt、README.md、CHANGLOG.md
    常见的js算法
    javascript设计模式详解
    ES6的相关信息
    轮播图插件
    webstrom随手笔记
  • 原文地址:https://www.cnblogs.com/parent-absent-son/p/11347569.html
Copyright © 2011-2022 走看看