exponenta event banner

Интеграция пакета Java в приложение

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

Чтобы создать Java-приложение, вызывающее метод, созданный MATLAB, выполните следующие действия.

  1. Установите среду выполнения MATLAB и созданные JAR-файлы одним из следующих способов:

    • Запустите программу установки, созданную MATLAB. Он может быть расположен в for_redistribution папки проекта развертывания.

      Это автоматически устанавливает MATLAB Runtime и помещает созданные JAR-файлы на компьютер.

    • Вручную установите MATLAB Runtime и созданные JAR-файлы в систему разработки.

      Созданные JAR-файлы находятся в проекте развертывания MATLAB for_testing папка. Инструкции по загрузке и установке среды выполнения MATLAB см. в разделе Установка и настройка среды выполнения 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 - экземпляр MATLAB MWNumericArray класс, используемый MATLAB для внутреннего формата данных.

    • result - это общий объект Java, содержащий результаты вызова MATLAB.

    • theMagic - класс экземпляра, созданный из функции MATLAB.

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

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

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

  10. Добавьте блок try/catch/finally после проверки аргумента.

  11. В try раздел блока try/catch/finally, добавьте следующий код.

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

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

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

    theMagic = new Class1();
    

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

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

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

    catch (Exception e)
    {
      System.out.println("Exception: " + e.toString());
    }
    
  15. Добавить следующее finally раздел к блоку try/catch/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 "<MATLAB_RUNTIME_INSTALL_DIR>\toolbox\javabuilder\jar\javabuilder.jar";
           .\makesqr.jar .\getmagic.java

    Примечание

    Введите javac в одной строке.

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

    <MATLAB_RUNTIME_INSTALL_DIR> путь к месту установки среды выполнения MATLAB в системе. Если в системе установлен MATLAB, можно использовать путь к установке MATLAB.

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

    java -classpath .;"<MATLAB_RUNTIME_INSTALL_DIR>\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 используйте двоеточие (:) в качестве разделителя пути класса вместо точки с запятой (;).

    <MATLAB_RUNTIME_INSTALL_DIR> путь к месту установки среды выполнения MATLAB в системе. Если в системе установлен MATLAB, можно использовать путь к установке MATLAB.

Для продолжения этого примера:

  • Попробуйте установить новое приложение на другой компьютер.

  • Попробуйте создать программу установки для приложения.

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