使用JNI调用具有库依赖关系的Java函数

时间:2013-10-23 14:42:13

标签: java c++ jvm java-native-interface natty

对于我的项目,我使用C ++来调用使用JNI的NLP Natty Date Parser Library的Java类。

在使用库之前,当我使用一个没有任何库依赖项的简单Java类来向C ++发送字符串时,没有任何问题。但是一旦我包含了相应的库来解析字符串,我就得不到我想要的结果了。我怀疑Java类无法调用库。

这是我在Java中调用的函数的一个例子

import com.joestelmach.natty.*;

public static boolean isValidCommand(String command){
    List<DateGroup> sample;
    Parser parser = new Parser(TimeZone.getDefault());
    sample = parser.parse(command);
    if(sample.get(LOCATION_OF_DATE).getDates().size() > MAX_LIMIT)
        return TOO_MANY_DATES;
    return true;
}

这是C ++中的函数,它调用前面提到的Java函数。

bool Wrapper::isValidCommand(string command){
if(_cls != 0) {
    jmethodID mid = _env->GetStaticMethodID(_cls,"isValidCommand","(Ljava/lang/String;)Z");
    if(mid != 0){
        jboolean data = _env->CallStaticBooleanMethod(_cls,mid,_env->NewStringUTF(command.c_str()));
        return data;
    }
}
return false;
}

我不确定如何链接我正在调用的Java类的库依赖项。感谢是否有人可以提供帮助。提前致谢。

0 个答案:

没有答案