Этот пример показывает, как вызвать сгенерированный метод MATLAB® в приложении Java®.
Создать приложение Java, которое вызывает MATLAB, сгенерировало метод:
Установите MATLAB Runtime и сгенерированные файлы JAR одним из следующих способов:
Запустите установщика, сгенерированного MATLAB. Это расположено в папке for_redistribution
проекта развертывания.
Выполнение так автоматически устанавливает MATLAB Runtime от сети и помещает сгенерированные файлы JAR на ваш компьютер.
Вручную установите MATLAB Runtime и сгенерированные файлы JAR на вашу систему разработки.
Можно загрузить инсталлятор MATLAB Runtime с https://www.mathworks.com/products/compiler/mcr. Сгенерированные файлы JAR расположены в папке for_testing
проекта развертывания MATLAB.
В папке, содержащей сгенерированные файлы JAR, создайте новый файл под названием getmagic.java
.
Используя текстовый редактор, откройте getmagic.java
.
Поместите следующее как первую строку в файле.
import com.mathworks.toolbox.javabuilder.*;
Этот оператор импортирует классы поддержки MATLAB.
Поместите следующую строку после первого оператора импорта.
import makesqr.*;
Этот оператор импортирует классы, сгенерированные компилятором.
Добавьте следующее определение класса.
class getmagic { }
Этот класс имеет один основной метод, который вызывает сгенерированный класс.
Добавьте метод main()
в приложение.
public static void main(String[] args) { }
Добавьте следующий код в верхнюю часть метода main()
.
MWNumericArray n = null; Object[] result = null; Class1 theMagic = null;
Это инициализирует переменные, используемые приложением.
n является экземпляром класса MWNumericArray
MATLAB, который MATLAB использует для его внутреннего формата данных.
result является типичным объектом Java, который содержит результаты вызова MATLAB.
theMagic является классом экземпляра, сгенерированным от функции MATLAB.
Добавьте следующий код после переменной инициализации.
if (args.length == 0) { System.out.println("Error: must input a positive integer"); return; }
Это - простая проверка, чтобы гарантировать, что необходимый параметр командной строки был передан приложению.
Добавьте блок попытки/выгоды/наконец после проверки аргумента.
В разделе try
блока попытки/выгоды/наконец добавьте следующий код.
n = new MWNumericArray(Double.valueOf(args[0]), MWClassID.DOUBLE);
Код инстанцирует экземпляра MWNumericArray
и заполняет, это с массивом 1 на 1, содержащим целое число, передало приложению на командной строке. Значение преобразовано в Double
, потому что это - самое прямое отображение между Java и MATLAB внутреннее представление данных.
После кода, инстанцирующего входного параметра, добавьте следующее, чтобы инстанцировать класса, сгенерированного из MATLAB.
theMagic = new Class1();
Конструктор для сгенерированного класса обрабатывает всю настройку, требуемую запустить MATLAB Runtime и заполнить его с необходимым кодом MATLAB.
Используя недавно инстанцированный объект, вызовите функцию MATLAB.
result = theMagic.makesqr(1, n); System.out.println(result[0]);
Добавьте следующий раздел catch
в блок попытки/выгоды/наконец, чтобы обработать любые исключения, которые могут быть выданы.
catch (Exception e) { System.out.println("Exception: " + e.toString()); }
Добавьте следующий раздел finally
в блок попытки/выгоды/наконец, чтобы очистить любые ресурсы.
finally { MWArray.disposeArray(n); MWArray.disposeArray(result); theMagic.dispose(); }
disposeArray()
и методы dispose()
очищают ресурсы, используемые сгенерированным кодом MATLAB.
Сохраните файл Java.
Завершенный файл Java должен напомнить следующее.
import com.mathworks.toolbox.javabuilder.*; import makesqr.*; class getmagic { public static void main(String[] args) { MWNumericArray n = null; Object[] result = null; Class1 theMagic = null; if (args.length == 0) { System.out.println("Error: must input a positive integer"); return; } try { n = new MWNumericArray(Double.valueOf(args[0]), MWClassID.DOUBLE); theMagic = new Class1(); result = theMagic.makesqr(1, n); System.out.println(result[0]); } catch (Exception e) { System.out.println("Exception: " + e.toString()); } finally { MWArray.disposeArray(n); MWArray.disposeArray(result); theMagic.dispose(); } } }
Используйте командную строку системы, чтобы перейти к папке, где вы установили сгенерированный пакет Java и сохранили новый файл Java.
Скомпилируйте приложение Java с помощью javac
.
javac -classpath "mcrroot\toolbox\javabuilder\jar\javabuilder.jar"; .\makesqr.jar .\getmagic.java
Введите команду javac
в одну строку.
На платформах UNIX® используйте двоеточие (:
) в качестве разделителя пути к классу вместо точки с запятой (;
).
mcrroot
является путем туда, где MATLAB Runtime установлен в вашей системе. Если вам установили MATLAB в вашей системе вместо этого, можно использовать путь к установке MATLAB.
От командной строки системы, запущенной приложение.
java -classpath .;"mcrroot\toolbox\javabuilder\jar\javabuilder.jar"; .\makesqr.jar getmagic 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 не может загрузить класс.
Введите команду java
в одну строку.
На платформах UNIX используйте двоеточие (:
) в качестве разделителя пути к классу вместо точки с запятой (;
).
mcrroot
является путем туда, где MATLAB Runtime установлен в вашей системе. Если вам установили MATLAB в вашей системе вместо этого, можно использовать путь к установке MATLAB.
Следовать этому примеру:
Попытайтесь установить новое приложение на различном компьютере.
Попытайтесь создать инсталлятор для приложения.
Попытайтесь интегрировать пакет, который состоит из нескольких функций.