FindJava

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

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

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

组件

此模块支持可选组件,这些组件可以通过 find_package() 命令指定

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

支持的组件包括

Runtime

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

Development

查找开发工具(java, javac, javah, jar, 和 javadoc)。指定此组件也意味着包含 Runtime 组件。

IdlJ

3.4 版本新增。

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

JarSigner

3.4 版本新增。

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

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

结果变量

此模块定义了以下变量

Java_FOUND

3.3 版本中新增。

布尔值,指示是否找到(所请求版本的)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)

另请参阅

  • 用于查找 Java Native Interface (JNI) 的 FindJNI 模块。

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