为 Java 应用程序动态指定 MATLAB Runtime 的选项
注意
使用 MWApplication 和 MWMCROption 类设置运行时选项仅适用于使用旧版 MWArray API 创建的 Java® 包。如果您正在使用 MATLAB® Data API for Java 进行开放,则这些初始化选项和类不适用。
Java 使用 MATLAB Compiler SDK™ 中基于 MWArray API 构建的包的应用程序,可以在初始化期间通过编程方式配置 MATLAB Runtime。这对于服务器端部署、无头环境,或者在 Java 虚拟机 (JVM) 与 MATLAB 环境之间存在二进制库冲突的系统非常有用。
要指定选项,请在 javabuilder.jar 中使用以下类:
com.mathworks.toolbox.javabuilder.MWApplicationcom.mathworks.toolbox.javabuilder.MWMCROption
可指定的选项
通过向 MWApplication.initialize 传递 MWMCROption 的值来指定以下选项。
| MATLAB Runtime 选项 | Java 选项 | 描述 |
|---|---|---|
-nojvm | MWMCROption.NOJVM | 在不使用 JVM 的情况下启动运行时。 |
-nodisplay | MWMCROption.NODISPLAY | 不启用显示功能。仅限在 Linux® 系统上使用。 |
-logfile <file> | MWMCROption.logFile("file") | 将运行时输出写入指定的日志文件。 |
-outproc | MWMCROption.OUTPROC | 请在与 Java 应用程序不同的进程中启动运行时,以解决二进制库冲突。 |
注意
MATLAB Runtime 支持一些无法通过 MWMCROption 配置的额外启动选项,例如 -softwareopengl。请通过您部署环境所支持的启动机制使用这些选项,而不是使用此 Java API。
使用选项初始化 MATLAB Runtime
在创建生成的类的实例之前,请调用 MWApplication.initialize。您可以在单次初始化调用中传递多个选项。
import com.mathworks.toolbox.javabuilder.MWApplication;
import com.mathworks.toolbox.javabuilder.MWMCROption;
public class InitRuntime {
public static void main(String[] args) throws Exception {
// Initialize with multiple options: Process Isolation, No JVM, and Logging
MWApplication.initialize(
MWMCROption.OUTPROC, // Resolve library conflicts
MWMCROption.NOJVM, // Disable internal JVM
MWMCROption.logFile("mcr.log") // Redirect output
);
// Create and use generated classes after initialization
// MyComponentClass obj = new MyComponentClass();
// obj.someMethod();
}
}查询初始化状态和选项值
使用 MWApplication 方法查询运行时是否已初始化,并获取当前有效的选项值。
| MWApplication 方法 | 描述 |
|---|---|
MWApplication.isMCRInitialized() | 如果运行时已初始化,则返回 |
MWApplication.isMCRJVMEnabled() | 如果运行时环境启用了 JVM,则返回 |
MWApplication.isMCRNoDisplaySet() | 如果指定了 |
MWApplication.getMCRLogfileName() | 返回由 |
默认值
如果在不提供任何输入的情况下调用 MWApplication.initialize(),运行时将使用以下默认值来配置可配置选项:
| 选项 | 默认值 |
|---|---|
-nojvm | false |
-nodisplay | false |
-logfile | none |
-outproc | false |
实现注意事项
执行频率:每个进程调用
MWApplication.initialize一次。这些选项在进程生命周期内有效,且在运行时启动后无法更改。自动初始化:如果未调用
MWApplication.initialize,则在首次创建生成的类的实例时,运行时会自动使用默认值进行初始化。库冲突解决:如果您的应用程序因主机环境和 MATLAB Runtime 使用的共享库版本冲突而遇到段错误或链接错误,请使用
MWMCROption.OUTPROC。操作系统约束:在 Windows® 系统上不支持
MWMCROption.NODISPLAY选项。