Интегрируйте пакет Java в приложение

Этот пример показывает, как вызвать сгенерированный метод MATLAB® в приложении Java®.

Создать приложение Java, которое вызывает MATLAB, сгенерировало метод:

  1. Установите 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.

  2. В папке, содержащей сгенерированные файлы JAR, создайте новый файл под названием getmagic.java.

  3. Используя текстовый редактор, откройте getmagic.java.

  4. Поместите следующее как первую строку в файле.

    import com.mathworks.toolbox.javabuilder.*;
    

    Этот оператор импортирует классы поддержки MATLAB.

  5. Поместите следующую строку после первого оператора импорта.

    import makesqr.*;
    

    Этот оператор импортирует классы, сгенерированные компилятором.

  6. Добавьте следующее определение класса.

    class getmagic
    {
    }

    Этот класс имеет один основной метод, который вызывает сгенерированный класс.

  7. Добавьте метод main() в приложение.

    public static void main(String[] args)
    {
    } 
  8. Добавьте следующий код в верхнюю часть метода main().

    MWNumericArray n = null;
    Object[] result = null;
    Class1 theMagic = null;
    

    Это инициализирует переменные, используемые приложением.

    • n является экземпляром класса MWNumericArray MATLAB, который MATLAB использует для его внутреннего формата данных.

    • result является типичным объектом Java, который содержит результаты вызова MATLAB.

    • theMagic является классом экземпляра, сгенерированным от функции MATLAB.

  9. Добавьте следующий код после переменной инициализации.

    if (args.length == 0)
    {
      System.out.println("Error: must input a positive integer");
      return;
    }
    

    Это - простая проверка, чтобы гарантировать, что необходимый параметр командной строки был передан приложению.

  10. Добавьте блок попытки/выгоды/наконец после проверки аргумента.

  11. В разделе try блока попытки/выгоды/наконец добавьте следующий код.

    n = new MWNumericArray(Double.valueOf(args[0]), MWClassID.DOUBLE);
    

    Код инстанцирует экземпляра MWNumericArray и заполняет, это с массивом 1 на 1, содержащим целое число, передало приложению на командной строке. Значение преобразовано в Double, потому что это - самое прямое отображение между Java и MATLAB внутреннее представление данных.

  12. После кода, инстанцирующего входного параметра, добавьте следующее, чтобы инстанцировать класса, сгенерированного из MATLAB.

    theMagic = new Class1();
    

    Конструктор для сгенерированного класса обрабатывает всю настройку, требуемую запустить MATLAB Runtime и заполнить его с необходимым кодом MATLAB.

  13. Используя недавно инстанцированный объект, вызовите функцию MATLAB.

    result = theMagic.makesqr(1, n);
    System.out.println(result[0]);
    
  14. Добавьте следующий раздел catch в блок попытки/выгоды/наконец, чтобы обработать любые исключения, которые могут быть выданы.

    catch (Exception e)
    {
      System.out.println("Exception: " + e.toString());
    }
    
  15. Добавьте следующий раздел finally в блок попытки/выгоды/наконец, чтобы очистить любые ресурсы.

    finally
    {
      MWArray.disposeArray(n);
      MWArray.disposeArray(result);
      theMagic.dispose();
    }
    

    disposeArray() и методы dispose() очищают ресурсы, используемые сгенерированным кодом MATLAB.

  16. Сохраните файл 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();
          }
       }
    }
    
  17. Используйте командную строку системы, чтобы перейти к папке, где вы установили сгенерированный пакет Java и сохранили новый файл Java.

  18. Скомпилируйте приложение Java с помощью javac.

    javac -classpath "mcrroot\toolbox\javabuilder\jar\javabuilder.jar";
           .\makesqr.jar .\getmagic.java

    Примечание

    Введите команду javac в одну строку.

    На платформах UNIX® используйте двоеточие (:) в качестве разделителя пути к классу вместо точки с запятой (;).

    mcrroot является путем туда, где MATLAB Runtime установлен в вашей системе. Если вам установили MATLAB в вашей системе вместо этого, можно использовать путь к установке MATLAB.

  19. От командной строки системы, запущенной приложение.

    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.

Следовать этому примеру:

  • Попытайтесь установить новое приложение на различном компьютере.

  • Попытайтесь создать инсталлятор для приложения.

  • Попытайтесь интегрировать пакет, который состоит из нескольких функций.

Для просмотра документации необходимо авторизоваться на сайте