FindJava

查找 Java 安装并确定其运行时工具和开发组件。

3.10 版本新增:支持 Java 9+ 版本解析。

组件

此模块支持以下组件

运行时

查找用于执行 Java 字节编译应用程序的 Java 运行时环境。

开发

查找开发工具(javajavacjavahjarjavadoc)。指定此组件也隐含 Runtime 组件。

IdlJ

3.4 版本新增。

查找接口描述语言 (IDL) 到 Java 编译器。

JarSigner

3.4 版本新增。

查找 Java 存档 (JAR) 文件的签名和验证工具。

组件可以选择使用标准语法指定,使用

find_package(Java [COMPONENTS <components>...])

如果未指定 COMPONENTS,则模块默认搜索 Runtime 组件。

结果变量

此模块定义了以下变量

Java_FOUND

布尔值,指示是否找到具有所有指定组件的 Java。

Java_<component>_FOUND

布尔值,指示是否找到 <component>

Java_VERSION

找到的 Java 版本。设置为:<major>[.<minor>[.<patch>[.<tweak>]]]

Java_VERSION_MAJOR

找到的 Java 的主版本。

Java_VERSION_MINOR

找到的 Java 的次版本。

Java_VERSION_PATCH

找到的 Java 的补丁版本。

Java_VERSION_TWEAK

找到的 Java 的调整版本(下划线字符 _ 后面的部分)。

Java_VERSION_STRING

找到的 Java 版本,例如 1.6.0_12

注意

Java_VERSIONJava_VERSION_STRING 不保证相同。例如,某些 Java 版本可能返回:Java_VERSION_STRING = 1.8.0_17Java_VERSION = 1.8.0.17

另一个例子是 Java OEM,其中 Java_VERSION_STRING = 1.8.0-oemJava_VERSION = 1.8.0

缓存变量

以下缓存变量也可以设置

Java_JAVA_EXECUTABLE

Java 运行时的完整路径。

Java_JAVAC_EXECUTABLE

Java 编译器的完整路径。

Java_JAVAH_EXECUTABLE

Java 头文件生成器的完整路径。

Java_JAVADOC_EXECUTABLE

Java 文档生成器的完整路径。

Java_IDLJ_EXECUTABLE

3.4 版本新增。

Java IDL 编译器的完整路径。

Java_JAR_EXECUTABLE

Java 归档工具的完整路径。

Java_JARSIGNER_EXECUTABLE

3.4 版本新增。

Java jar 签名工具的完整路径。

提示

此模块接受以下变量

JAVA_HOME

调用者可以设置此变量以明确指定 Java 的安装目录。

示例

查找 Java

find_package(Java)

查找 Java 并确保其版本不低于指定的最低版本

find_package(Java 1.8)

查找 Java 并使其成为必需(如果未找到 Java,则处理将停止并显示错误消息)

find_package(Java 1.8 REQUIRED)

指定需要查找的 Java 组件

find_package(Java COMPONENTS Development JarSigner)

另请参阅

  • FindJNI 模块用于查找 Java 本机接口 (JNI)。

  • UseJava 模块用于在 CMake 中使用 Java。