主要内容

本页采用了机器翻译。点击此处可查看英文原文。

使用 MATLAB Data API 将 MATLAB 函数部署到 Java 应用程序中,用于 Java

此示例演示了如何打包一个 MATLAB® 函数,并将其部署到 Java® 应用程序中。Windows®、Linux®macOS 系统支持此工作流。本示例使用基于 Windows 工作流。

前提条件

  • 创建一个对 MATLAB 搜索路径可见的新工作文件夹。此示例使用名为 work 的文件夹。

  • 请确认您已搭建好 Java 开发环境。有关详细信息,请参阅 设置 Java 开发环境

  • 请确认您已满足所有 MATLAB Compiler SDK™ Java 目标要求。有关详细信息,请参阅 MATLAB Compiler SDK Java 目标要求

  • 最终用户必须安装 MATLAB Runtime 才能运行应用程序。有关详细信息,请参阅下载并安装 MATLAB Runtime

    出于测试目的,您可以使用安装的 MATLAB 来代替 MATLAB Runtime

数据管理

要在已部署的 MATLAB 代码与 Java 应用程序之间交换数据,请使用适用于 Java 的 MATLAB Data API。MATLAB 引擎也使用此 API。有关详细信息,请参阅 Java Data Type Conversions

创建 MATLAB 函数

使用以下代码创建一个名为 calculateDistance.m 的 MATLAB 文件:

function distance = calculateDistance(p1, p2)
% This function calculates the Euclidean distance between two points
% Inputs:
%   p1 - a two-element vector [x, y]
%   p2 - a two-element vector [x, y]
% Output:
%   distance - the Euclidean distance between p1 and p2

% Calculte Euclidean distance
diff = p1 - p2;
diffSq = diff.^2;
sumSq = sum(diffSq);
distance = sqrt(sumSq);
end

使用 compiler.build.javaPackage 创建 Java

使用 compiler.build.javaPackage 函数,根据 MATLAB 函数生成的数据生成代码存档(.ctf 文件)。

buildResults = compiler.build.javaPackage( ...
    "calculateDistance.m",...
    Interface="matlab-data",...
    Verbose="on", OutputDir=".\output",....
    PackageName="com.example.matlabfunction")

尽管在 compiler.build.javaPackage 函数中指定 PackageName 并非强制要求,但强烈建议您指定。指定包名可以使生成的代码拥有更简洁、更易预测的 Java 命名空间。如果省略该参数,系统将使用名为 example 的默认根包,这可能会导致您的 Java 应用程序的包结构杂乱无章或令人困惑。

当您将 MATLAB 函数打包以供 Java 集成时,该过程会在您指定的输出目录中生成多个文件。其中,Java 集成所需的唯一关键文件是代码存档(.ctf 文件),其中包含您打包的 MATLAB 代码和资源。有关其他文件的详细信息,请参阅 打包 MATLAB 函数后生成的文件

P:\MATLAB\WORK\OUTPUT
    mccExcludedFiles.log
    unresolvedSymbols.txt
    matlabfunction.ctf
    readme.txt
    includedSupportPackages.txt
    requiredMCRProducts.txt
    buildresult.json
    GettingStarted.html

No subfolders exist

在使用 MATLAB Data API 处理 Java 时,compiler.build.javaPackage 函数会生成一个 .ctf 文件,但不会生成包含 Java 包装器的 JAR 文件。有关详细信息,请参阅 MATLAB Data API for Java 工作流

MATLAB 代码集成到 Java 应用程序中

您可以在自己偏好的 Java 开发环境中完成集成过程,包括使用文本编辑器配合 Java 开发工具包 (JDK) 的命令行工具,或者在 Windows、macOS 和 Linux 上使用 IntelliJ IDEA 和 Visual Studio Code 等替代方案。有关详细信息,请参阅 设置 Java 开发环境

使用 Java 命令行 API 构建应用程序

  1. 使用以下代码创建一个名为 Distance.java 的 Java 驱动应用程序:

     Distance.java

    创建该文件后,生成的目录结构如下:

    work/
    ├── Distance.java
    └── output/
        ├── matlabfunction.ctf
        └── ...
    
  2. 通过将类路径设置为包含 matlabruntime.jar 来编译您的 Java 代码。

    set MATLABROOT=C:\Program Files\MATLAB\R2026a
    
    javac -classpath ".;%MATLABROOT%\toolbox\javabuilder\jar\matlabruntime.jar" Distance.java
  3. 通过将类路径设置为包含 matlabruntime.jar,并配置对本机运行时库的访问权限,来运行您的 Java 应用程序。有关详细信息,请参阅 设置 MATLAB 库路径以测试已部署的应用程序

    java -classpath ".;%MATLABROOT%\toolbox\javabuilder\jar\matlabruntime.jar" Distance
    
    Euclidean Distance between [0, 0] and [3, 4] is 5.0

    如果在未设置环境变量以访问来自 MATLAB 或 MATLAB Runtime 的本机运行时库的情况下运行 Java 应用程序,将会导致 java.lang.UnsatisfiedLinkError

    注意

    在安装了完整 MATLAB 版本的计算机上测试应用程序时,您可以使用 MATLAB 安装来配置对原生库的访问。

    在使用 MATLAB Runtime 的部署场景中,您必须在 MATLAB Runtime 的安装目录中明确指定本机库的位置。这种区分确保了已部署的应用程序能够独立于完整的 MATLAB 安装环境运行。

    有关详细信息,请参阅:

另请参阅

| |

主题