正确设置JAVA_HOME时,CMake找不到JNI

时间:2018-12-20 22:13:45

标签: java cmake

因此,我正在尝试构建cmake,以便可以将其与正在设计的Java GUI一起使用。我在这里已经准备好许多问题,并查看了一些有关如何执行此操作的教程,唯一的共同点是它们似乎都在说,如果它不起作用,请将JAVA_HOME设置为JDK位置。但是我已经做到了,但仍然行不通。

java的cmake输出是这样的:

--   Java:                          
--     ant:                         /usr/bin/ant (ver 1.10.3)
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO

并显示我已设置JAVA_HOME:

echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64
which java
/usr/bin/java

namei /usr/bin/java
f: /usr/bin/java
 d /
 d usr
 d bin
 l java -> /etc/alternatives/java
   d /
   d etc
   d alternatives
   l java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
     d /
     d usr
     d lib
     d jvm
     d java-11-openjdk-amd64
     d bin
     - java

echo $PATH
/usr/lib/jvm/java-11-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr      /sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

所以我设置了我的环境变量,它发现ant很好,但是拒绝找到JNI。任何人有任何想法吗?

2 个答案:

答案 0 :(得分:0)

似乎您必须手动指定jni头文件所在的include目录的路径,例如/usr/lib/jvm/java-11-openjdk-amd64/include/

如果使用的构建脚本使用环境变量JAVA_HOME,则应在目录$JAVA_HOME/include中搜索JNI包含文件。此路径是AFAIK当前至少适用于所有Java版本8-11。

答案 1 :(得分:0)

请尝试:FindJNI

find_package(JNI)

if (JNI_FOUND)
    message (STATUS "JNI_INCLUDE_DIRS=${JNI_INCLUDE_DIRS}")
    message (STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}")
endif()