使用 Java 包编译器创建 Java 包
支持的平台:Windows®、Linux®、Mac
此示例演示了如何使用 Java 包编译器将多个 MATLAB® 函数打包成一个 Java® 包。您可以在一个计算幻方的 Java 应用程序中调用该包。
在 R2025a 之前的版本中: 使用库编译器创建一个 Java 包,具体操作请参阅生成 Java 包并构建 Java 应用程序 (R2024b)。
前提条件
验证您所安装的 Java 版本是否与 MATLAB Compiler SDK™ 兼容。详细信息,请参阅 MATLAB 支持的其他语言接口。
最终用户必须安装 MATLAB Runtime 才能运行应用程序。有关详细信息,请参阅下载并安装 MATLAB Runtime。
出于测试目的,您可以使用安装的 MATLAB 来代替 MATLAB Runtime。
编写可部署的 MATLAB 代码
在 MATLAB 中,检查您想要打包的 MATLAB 代码。此示例使用位于 目录中的这些文件。\toolbox\javabuilder\Examples\MagicSquareExamplematlabroot
| MATLAB 函数 | MagicSquareExample\MagicDemoComp\makesqr.m |
| Java 应用程序代码 | MagicSquareExample\MagicDemoJavaApp\getmagic.java |
在 MATLAB 命令提示符下,将随 MATLAB 一起提供的 MagicSquareExample 文件夹中的所有内容复制到一个新文件夹,并将其命名为 MagicProjectJava。
copyfile(fullfile(matlabroot,"toolbox","javabuilder","Examples","MagicSquareExample"),"MagicProjectJava");
检查位于 MagicDemoComp 文件夹中的 MATLAB 函数 makesqr.m。
function y = makesqr(x)
y = magic(x);在 MATLAB 命令提示符下,输入 makesqr(5)。
输出是一个 5×5 矩阵。
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9创建工程和编译任务
使用 Java 包编译器创建函数的编译任务。编译器任务允许您为特定部署目标编译工程中的文件。
要打开该 App,在 App 选项卡上,展开 App 图库。在应用程序部署部分,点击 Java 包编译器。

您还可以在 MATLAB 命令行窗口中使用 javaPackageCompiler 函数打开该 App。
打开 App 后,“创建编译器任务”对话框会提示您将编译器任务添加到新的或现有 MATLAB 工程中。在此示例中,选择启动新工程并创建编译器任务,并在工作文件夹中创建一个名为 MagicProject 的新工程。有关创建和使用 MATLAB 工程的详细信息,请参阅创建工程。

编辑器中打开了一个名为 JavaPackage1 的新编译任务。您可以通过打开编译器任务管理器或转到管理任务选项卡并创建一个新的编译器任务来编译其他部署目标的代码。
指定编译选项
在打包之前,您可以为 Java 软件包及其安装程序指定选项,以自定义构建和打包过程。例如,您可以混淆处理 MATLAB 代码,或指定在生成的安装程序中包含 MATLAB Runtime 的方法。
将 MATLAB 函数添加到 Java 包中。所有文件必须位于工程根文件夹中才能添加到工程中。在此示例中,在编译器任务的导出的函数部分,点击添加文件,然后选择 makesqr.m。在“工程”面板中,该文件现在带有标签 Design 和 Exported Function File。

在包信息部分,将字符串 My Java Package 替换为您的 Java 包的名称,即 magicsquare。
在编译设置部分,将字符串 Class1 替换为 Java 类的名称,即 magic。

查看代码和包 Java 包
要查看包含有关构建和打包组件的说明的代码,请点击导出编译脚本按钮旁边的箭头,然后选择显示代码。在右侧,一个窗口显示了一个部署脚本,其中包含与您的构建选项相对应的 compiler.build.javaPackage 和 compiler.package.installer 函数。
您可以通过点击导出编译脚本按钮将此代码转换为 MATLAB 脚本文件。运行生成的构建脚本与点击编译和打包按钮等效。

要创建 Java 包,请点击编译和打包。
编译器会在工程文件夹中的 文件夹中生成文件。<compiler_task_name>/outputbuild 子文件夹包含 Java 包,而 package 子文件夹包含您的包的安装程序以及 MATLAB 运行时。要为生成的文件选择不同的输出位置,请更新输出位置部分中的路径。
编译并运行 Java 应用程序
创建 Java 包后,编写一个 Java 应用程序的源代码,该应用程序调用包中的 MATLAB 函数。
此示例名为 getmagic.java 的 Java 应用程序位于 MagicDemoJavaApp 文件夹中。将此文件复制或移动到包含生成的包的文件夹中,即 magicsquare.jar 文件夹。
getmagic 应用程序执行这些操作。
创建一个
MWNumericArray数组来存储输入数据。实例化一个
magic对象。调用
makesqr方法,其中第一个参数指定输出参量的数量,后续参数按顺序作为输入参量传递给函数。使用
try-catch模块处理异常。使用
MWArray方法释放本机资源。
要在部署前在 MATLAB 中测试应用程序,请导航到同时包含生成的可部署代码存档 magicsquare.jar 和应用程序 getmagic.java 的文件夹。然后,使用 matlabroot、fullfile 和 system 函数运行以下命令。
compileCommand = ['javac -cp magicsquare.jar;"' ... fullfile(matlabroot,'toolbox','javabuilder','jar', ... 'javabuilder.jar') '" getmagic.java']; runCommand = ['java -cp .;magicsquare.jar;"' ... fullfile(matlabroot,'toolbox','javabuilder','jar', ... 'javabuilder.jar') '" getmagic 5'] system([compileCommand ' && ' runCommand]);
注意
根据需要修改上述命令中 getmagic.java 和 magicsquare.jar 的路径。
要部署 Java 包,请将文件 magicsquare.jar 和 getmagic.java 分发给最终用户。
要运行由 MATLAB Compiler SDK 生成的 Java 包,您必须安装 MATLAB Runtime。有关详细信息,请参阅下载并安装 MATLAB Runtime。如果您使用编译和打包创建了安装程序,该安装程序包含与用于编译 Java 包的 MATLAB 版本相匹配的 MATLAB 运行时版本。
要在 MATLAB 之外编译并运行 Java 应用程序,请打开系统命令提示符窗口,并导航至包含 magicsquare.jar 和 getmagic.java 的文件夹。
使用 Java 编译 javac 应用程序。
在 Windows 中,输入以下命令。
javac -classpath "<matlabroot>\toolbox\javabuilder\jar\javabuilder.jar";magicsquare.jar getmagic.java在 UNIX® 中,输入以下命令。
javac -classpath "<matlabroot>/toolbox/javabuilder/jar/javabuilder.jar";magicsquare.jar getmagic.java
将 替换为您的 MATLAB 或 MATLAB Runtime 安装路径。例如,在 Windows 上,路径可能为 <matlabroot>C:\Program Files\MATLAB\MATLAB Runtime\R2025a。
在系统命令提示符下,使用输入参量 5 运行该应用程序。
在 Windows 中,输入以下命令。
java -classpath .;"matlabroot\toolbox\javabuilder\jar\javabuilder.jar";magicsquare.jar getmagic 5在 UNIX 中,输入以下命令。
java -classpath .:"matlabroot/toolbox/javabuilder/jar/javabuilder.jar":magicsquare.jar getmagic 5
该应用程序显示一个 5×5 的幻方。
Magic square of order 5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9为了进一步探讨这个示例:
尝试在另一台计算机上运行生成的应用程序。
尝试使用
compiler.build.javaPackage构建一个 Java 包。尝试集成一个由多个函数组成的包。有关示例,请参阅创建使用多个 MATLAB 函数的 Java 应用程序。
另请参阅
Java 包编译器 | compiler.build.javaPackage | compiler.package.installer
