AnyLogic
Развернуть
Размер шрифта

Добавление внешних Java классов

AnyLogic предоставляет уникальную возможность добавления любых внешних Java классов в вашу модель.

Для этого вам необходимо:

  1. Импортировать архивов Java (*.jar, *.zip) или каталог внешних классов в модель AnyLogic.
  2. Добавить операторов импорта в модель или использовать полный путь при обращении к экземплярам внешних Java классов.

Более того, AnyLogic позволяет добавлять каталоги внешних классов. Эта возможность особенно полезна на стадии разработки модели, когда внешние Java классы постоянно изменяются. Когда же вы закончите создание вашей модели, будет проще заархивировать каталог классов в.jar файл и связать с моделью именно файл архива.

Как и библиотеки, и файлы Java архивов и каталоги классов, необходимые для построения модели, должны быть указаны в списке зависимостей модели. Этот список редактируется в секции Зависимости панели свойств модели. При экспорте модели все ресурсы, указанные в этом списке будут скопированы в тот каталог, куда будет помещен файл экспортированной модели.

Чтобы добавить внешние Java классы (в виде архивного файла Java или каталога внешних классов) в список зависимостей модели

  1. Выберите модель в панели Проекты (элемент верхнего уровня дерева).

  2. Откройте секцию Зависимости панели Свойства.

  3. В секции зависимостей модели, щелкните по кнопке Добавить справа от таблицы Jar файлы и папки классов, требуемые для построения модели. Откроется диалоговое окно Добавить путь к классам.

  4. Выберите Тип добавляемого ресурса: Файл архива Java (*.jar, *.zip) или Каталог внешних классов.
  5. Выберите, хотите ли вы скопировать файл Java архива в каталог модели или нет. Импортируя файлы ресурсов модели, вы делаете вашу модель легко переносимой (ее легче передавать другим пользователям, просто копируя весь каталог модели целиком). Для импорта файла в папку модели выберите опцию Импортировать файл в папку модели. В противном случае (опция Ссылаться на текущее местоположение файла) файлы останутся в текущем месте, и в модели будет просто запомнена ссылка на их местоположение. Этот случай чаще всего используется, когда на один Java архив ссылаются сразу несколько моделей AnyLogic, и в случае обновления такого файла архива проще выполнять данное обновление в одном месте, при этом все модели будут ссылаться на обновленный файл без каких бы то ни было изменений.
  6. Укажите имя файла (включая путь к нему) в поле Файл. Вы можете задать как абсолютный, так и относительный путь к файлу (выберите ниже соответствующую опцию, Использовать абсолютный путь, или Использовать относительный путь). Вы можете выбрать необходимый файл с помощью стандартного диалогового окна выбора файла, открываемого по щелчку кнопки Открыть.
  7. Когда вы закончите процесс добавления, закройте диалоговое окно, щелкнув по кнопке Готово. По завершении исходный файл также автоматически появится в папке Ресурсы, расположенной в панели Проекты. Таким образом вы сможете отслеживать текущее состояние этого файла, менять тип пути к файлу и т.д.

Обращение ко внешним Java классам в модели AnyLogic

После настройки зависимостей вы можете использовать внешние Java классы в вашей модели.

С помощью следующей демонстрационной модели мы покажем, как обращаться к внешним Java классам внутри модели. В этой модели мы используем внешнюю Java библиотеку JAMA. JAMA — это базовая Java библиотека функций линейной алгебры. В нашей модели три переменные (A, B, C), которые являются экземплярами внешнего класса Jama.Matrix, разработанного в качестве стандартного матричного класса для Java.

Демо-модель: External JAR files Открыть страницу модели в AnyLogic Cloud. Там можно запустить модель или скачать ее по ссылке Исходные файлы модели.

Есть два способа обращения к внешним Java классам из вашей модели AnyLogic.

  • Объявление и обращение к экземплярам внешних Java классов с помощью полного имени класса (и префикса, который состоит из имени пакета). Этим способом в нашей демонстрационной модели мы обращаемся к переменной A. Мы используем полное имя класса в качестве Типа переменной (Jama.Matrix), а также используем полное имя класса для инициализации переменной в Java-конструкторе (см. Начальное значение в свойствах переменной: new Jama.Matrix( 2, 5 ). Мы рекомендуем пользоваться этим способом только в том случае, если количество обращений к внешним Java классам в вашей модели ограничено.
  • Импортирование класса в модель путем добавления выражения(-ий) import в свойства агента модели. Таким образом вы можете обращаться к классам, используя краткие имена классов и необходимость в префиксе с именем пакета отпадет. Чтобы добавить оператор импорта, откройте свойства типа агента, который обращается к внешним Java классам (в нашем случае это тип агента Main).
    Разверните секцию свойств Java для экспертов и в кодовом поле Импорт напечатайте: import имя_пакета.имя_класса;, чтобы импортировать необходимый класс подключенной Java библиотеки. Например:
    import Jama.Matrix;
    Еще проще сразу импортировать весь пакет целиком, напечатав: import имя_пакета.*;. Пример:
    import Jama.*;

    Завершив импорт Java пакета, вы сможете обращаться к его классам более простым способом (как это делаем мы в случае с переменной B в нашей демонстрационной модели, где указан Тип переменной Matrix). Мы рекомендуем пользоваться именно этим способом: импортировать весь пакет целиком и упростить доступ к внешним Java классам в вашей модели.

Удаление Java классов из зависимостей модели

Если какой-то ресурс больше не используется в модели, он может быть удален из списка зависимостей этой модели.

Чтобы удалить внешний .jar файл или каталог классов из списка зависимостей модели

  1. Выберите модель в панели Проекты (элемент верхнего уровня дерева).
  2. Перейдите в секцию Зависимости в панели Свойства.
  3. Выберите ресурс, который вы хотите удалить, в таблице Jar файлы и каталоги классов, требуемые для построения модели и щелкните мышью по кнопке Удалить справа от таблицы.

Как мы можем улучшить эту статью?