因此,我正在尝试构建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。任何人有任何想法吗?
答案 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()