Java 无法打开包含文件:';jni.h';:没有这样的文件或目录 我尝试使用C++语音识别API的版本。它是一个内置在爪哇的API,同时也支持C++。然而,每当我试图执行它时,我都会得到错误 C:\Users\yohan\Documents\Extra C++ Libs\Voice Recognition - Voce API\voce-0.9.1\src\c++\voce.h:34: error: C1083: Cannot open include file: 'jni.h': No such file or directory

Java 无法打开包含文件:';jni.h';:没有这样的文件或目录 我尝试使用C++语音识别API的版本。它是一个内置在爪哇的API,同时也支持C++。然而,每当我试图执行它时,我都会得到错误 C:\Users\yohan\Documents\Extra C++ Libs\Voice Recognition - Voce API\voce-0.9.1\src\c++\voce.h:34: error: C1083: Cannot open include file: 'jni.h': No such file or directory,java,c++,qt,java-native-interface,header-files,Java,C++,Qt,Java Native Interface,Header Files,这是我的.pro内容 #------------------------------------------------- # # Project created by QtCreator 2013-04-26T12:59:05 # #------------------------------------------------- QT += core QT -= gui TARGET = Tired CONFIG += console CONFIG -=

这是我的.pro内容

#-------------------------------------------------
#
# Project created by QtCreator 2013-04-26T12:59:05
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = Tired
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

INCLUDEPATH += C:/opencv/build/include
INCLUDEPATH += C:/opencv/build/include/opencv
INCLUDEPATH += C:/Program Files/Java/jdk1.7.0/include/
INCLUDEPATH += C:/Program Files/Java/jdk1.7.0/include/win32

LIBS += C:/opencv/build/x86/vc9/lib/opencv_calib3d240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_contrib240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_core240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_features2d240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_flann240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_highgui240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_imgproc240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_objdetect240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_video240.lib

HEADERS +=
这是Main.cpp的代码

#include "C:/Users/yohan/Documents/Extra C++ Libs/Voice Recognition - Voce API/voce-0.9.1/src/c++/voce.h"

int main()
{


}
voce.h代码的一小部分如下所示

#ifndef VOCE_H
#define VOCE_H

// This file contains a C++ interface for Voce's Java functions.  All of 
// the Java methods in Voce's API are instance methods, so we don't need 
// to handle class methods here.  For documentation on the specific 
// functions, refer to the API documentation for the Java source.

#include <jni.h>
#include <iostream>
#include <string>

/// The namespace containing everything in the Voce C++ API.
namespace voce
{
#ifdef WIN32
const std::string pathSeparator = ";";
#else
const std::string pathSeparator = ":";
#endif

    /// Contains things that should only be accessed within Voce.
    namespace internal
    {
        /// Global instance of the JNI environment.
        JNIEnv* gEnv = NULL;

        /// Global instance of the Java virtual machine.
        JavaVM *gJVM = NULL;

//Code Continues..........................................
\ifndef VOCE\H
#定义VOCE_H
//这个文件包含VoCE的java函数的C++接口。全部
//Voce API中的Java方法是实例方法,因此我们不需要
//在这里处理类方法。有关特定项目的文档
//函数,请参阅Java源代码的API文档。
#包括
#包括
#包括
///包含VoC+C++ API中的所有内容的命名空间。
名称空间voce
{
#ifdef WIN32
常量std::字符串路径分隔符=“;”;
#否则
常量std::字符串路径分隔符=“:”;
#恩迪夫
///包含只能在Voce中访问的内容。
命名空间内部
{
///JNI环境的全局实例。
JNIEnv*gEnv=NULL;
///Java虚拟机的全局实例。
JavaVM*gJVM=NULL;
//代码继续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

如何消除此错误?我使用的是使用Visual Studio 2010编译器的最新版本QT。

您应该引用包含空格的INCLUDEPATH部分。而不是执行以下操作:

INCLUDEPATH += C:/Program Files/Java/jdk1.7.0/include/
INCLUDEPATH += C:/Program Files/Java/jdk1.7.0/include/win32
您可能应该:

INCLUDEPATH += "C:/Program Files/Java/jdk1.7.0/include/"
INCLUDEPATH += "C:/Program Files/Java/jdk1.7.0/include/win32"

愚蠢的问题,但是你安装了JDK吗?@john:当然有:)是否“C:/Program Files/Java/jdk1.7.0/include/”包含
jni.h
?您是通过qmake还是通过Visual Studio IDE构建它?您是否尝试过引用两个“INCLUDEPATH+=C:/Program Files/Java/jdk1.7.0/include/”条目中的路径?只是想知道程序文件中的空格是否导致了问题。太好了。谢谢,+1来自我:)找到jni.h,没有返回任何内容。我有Java 1.7 I已在Ubuntu 13.04计算机上安装。