c++ - Linux 上的 CMake FindJNI 问题

标签 c++ cmake java-native-interface clion

我正在 CLion 中建立一个 C++17 项目,我想使用 Java native 接口(interface),但问题来了。 FindJNI.cmake 失败并出现错误:
找不到 JNI(缺少:JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2)

我尝试使用以下方法在我的 CMakeLists.txt 中手动设置 JAVA_INCLUDE_PATH:
set(JAVA_INCLUDE_PATH "$ENV{JAVA_HOME}/include")(与 PATH2 相同),它只部分解决了问题,因为 cmake 输出是 Found JNI:/usr/lib/jvm/default/lib/amd64/libjawt.so

我的 CMakeLists.txt

cmake_minimum_required(VERSION 3.14)
project(project1)

set(CMAKE_CXX_STANDARD 17)

find_package(JNI REQUIRED)

add_executable(project1 main.cpp)

注意:我将 JAVA_HOME 设置为 /usr/lib/jvm/java-8-openjdk 并从 AUR 安装了 java-8-openjdk 包。

最佳答案

你试过用这个添加包含吗

include_directories( ${CMAKE_JAVA_} $ENV{JAVA_HOME}/include $ENV{JAVA_HOME}/include/linux )

关于c++ - Linux 上的 CMake FindJNI 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447935/

相关文章:

java - 我是否保证每个使用 JNI 的进程只有一个 JavaVM?

c++ - 当编译时已知引用占用非聚合结构中的空间时,是否错过了优化?

C++ UNIX 错误 : Undefined first referenced symbol in file

c++ - 自定义容器基于范围的迭代

cmake - 如何在cmake中打印目标的所有属性?

c++ - Windows下的HDF5作为动态链接库Qt/C++

java - JNI(Java) 等同于 INCREF,DECREF 在用于 C++ 的 python 中使用?

c++ - 为什么在以下示例中创建临时文件

visual-studio - Visual Studio 的 Cmake 生成器不设置 CMAKE_CONFIGURATION_TYPES

java - 我可以使用 JNI 调用 Python 库吗?