你的位置:首页 > 操作系统

[操作系统]unresolved inclusion in the java header in JNI


 

eclipse的ndk开发环境建差不多后打开jni的samples里的hello-jni项目。添加native和运行都没有问题,但是打开hello-jni.c看到一片红:

光这一个文件牵涉的问题有下面一些,罗列出来方便搜到。

Unresolved inclusion: <string.h>

Unresolved inclusion: <jni.h>

Type 'jstring' could not be resolved

Type 'JNIEnv' could not be resolved

Type 'jobject' could not be resolved

还可能有NewStringUTF的Unresoved问题(解决方法在最下面)

原理没研究,解决方法根据情况不同可能涉及到下面的一种或两种方法

方法一,通过重建.project和.cproject解决

来源:http://stackoverflow.com/questions/23122934/eclipse-adt-unresolved-inclusion-jni-h

1. 关闭eclipse

2. 用notepad++等工具打开hello-jni文件夹中的.project文件,把下面三块内容删除

 

    <buildCommand>      <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>      <triggers>clean,full,incremental,</triggers>      <arguments>      </arguments>    </buildCommand>

 

    <buildCommand>      <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>      <triggers>full,incremental,</triggers>      <arguments>      </arguments>    </buildCommand>

 

    <nature>org.eclipse.cdt.core.cnature</nature>    <nature>org.eclipse.cdt.core.ccnature</nature>    <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>    <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>

3. 保存

4. 删除同文件夹下的.cproject文件

5. 重新打开eclipse

6. 右键项目-->Android Tools-->Add Native Support...点击finish

如果问题没有解决,

方法二,添加c和c++库的路径

右键项目 --> Properties --> C/C++ General --> Path and Symbols --> Includes 点击右边的Add...按钮添加include路径在ndk路径里,我的是:

D:\XunLeiDownload\android-ndk-r10e\platforms\android-16\arch-arm\usr\include

Refresh项目,问题解决:

 

对于NewStringUTF的Unresoved问题,找了下,不完美的解决方法是 Window --> Preferences --> C/C++ --> Code Analysis里把Method cannot be resolved这个检查项去掉即可。