未解决的包含在JNI的java头中

sri*_*ith 7 c java-native-interface opencv

这是我的java文件,我想为android opencv应用程序使用javah生成头文件.

package com.hosa;

public class edgejava{
static{
    System.loadLibrary("edgejava");
}
public native int main(``);
}
Run Code Online (Sandbox Code Playgroud)

生成的头文件如下.

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

#ifndef _Included_com_hosa_edgejava
#define _Included_com_hosa_edgejava
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     com_hosa_edgejava
* Method:    main
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_com_hosa_edgejava_main
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif
Run Code Online (Sandbox Code Playgroud)

eclipse指出在头文件中包含jni.h是未解决的.解决这个问题需要采取的步骤是什么?

问候,srijith

Idi*_*tic 26

我也遇到过这个问题所以对于那些偶然发现这个问题的人来说......

我从日食中解决了JNI问题 - 你可能已经完成了第1步或类似的事情

  1. 文件 - >新建 - >其他 - > C++>转换为C++项目

  2. 点击Project Head - > Properties - > C++ General - > Paths And Symbols

  3. 在GNU和GNUC++语言条目下添加类似于此的路径

    / NDK /平台/ Android的9 /弓形臂的/ usr /包括

    您的路径将根据您的设置方式,平台编号等而有所不同.

    完成后,在提示时重建索引

  4. 关闭你的项目,重新打开它,然后清理构建(或者它可能立即发生)

在我的情况下,然后发现JNI.h但是JNIEnv等仍然无法识别,即使它们在JNI.h文件中.

还要注意任何有此问题的人都不会阻止你构建,你只需要关闭有问题的文件,然后打开和关闭你的项目以摆脱错误(多么痛苦)

更新:固定!

在Indigo版本中,从菜单/对话框中执行以下操作

Window-> Preferences-> C/C++ - >索引检查"Index Unused Headers"如果需要,可以重新索引/构建

您可能还需要添加"/NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.4.3/include"上面有我上面提到的到语言条目.

现在所有的符号都被认出来了 - 希望这能帮助一些让我疯狂的人.