View on GitHub

blog

jsr233launcher

Программа для запуска скриптов (на выполнение) из командной строки. Поддерживаются те скрипты, которые соответствуют спецификаии JSR2331 и добавлены в Java Classpath2

Использование

Синтаксис запуска скрипта на выполнение

jsr233script [<опции>] <файл_сценария> [параметры]

Опции

Примеры

Пример запуска JavaScript

0) Подготовте окружение для работы

В ос linux, откройте терминал и выполните команду

export PATH=<CXHOME>/bin:$PATH

Где <CXHOME> - путь до каталога установки

1) Создайте файл sample01.js со следующим содержанием:

print( 'Sample using JavaScript (nashorn 1.8) in cxconsole' );

var curdir = new java.io.File('.');
for each (var el in curdir.listFiles()) {
	print( el )
}

2) выполните следующую команду

jsr233script sample01.js

Данный скрипт выведет содержание текущего каталога

-list engines

Опция -list engines выводит список доступных языков в виде таблицы

jsr233script -list engines
Language Lang ver Engine name Eng. version Extensions Mime Names
ECMAScript ECMA - 262 Edition 5.1 Oracle Nashorn 1.8.0_162 js application/javascript, application/ecmascript, text/javascript, text/ecmascript nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript
Groovy 2.4.15 Groovy Scripting Engine 2.0 groovy application/x-groovy groovy, Groovy

Список доступных языки можно расширить доустановив файлы jar с поддержкой JSR233 в каталог <CXHOME>/lib

Classloader

Classloader - это java-объект который загружает необходимые классы в текущую java virtual machine.

Существуют несколько видов загрузчиков классов, загрузчики классов используются для различных целий - добавление нового API или сторонних библиотек, или еще для чего либо.

В данной случаи возможно без написания специального Java кода, создать Classloader из XML файла.

Пример:

<UrlClassLoaderBuilder parentCL="Inherit">
    <FileEntry>/home/home/lib1.jar</FileEntry>
    <FileEntry>lib2.jar</FileEntry>
    <UrlEntry>http://site.com/lib3.jar</UrlEntry>
</UrlClassLoaderBuilder>

ClassLoaderBuilder - это Java интерфейс для создания загрузчика классов, а UrlClassLoaderBuilder - одна из его реализаций.

Так в этом файле указывается UrlClassLoaderBuilder в качестве строителя загрузчика классов.

FileEntry - Указывает путь до скомпилированных Java классов. Путь может быть относительным. UrlEntry - Указывает на http/https адрес скомпилированных Java классов.

Указание расположения Classloader

Вариант 1

Classloader из командной строки указывается параметром -cl classloader_file.

jsr233script -cl file.classloader ...

Вариант 2

Можно рядом с файлом сценария расположить файл classloader:

$ ls -la
-rw-rw-r-- 1 user user   4105 апр 11 13:30 sample02.groovy
-rw-rw-r-- 1 user user    110 апр 11 13:15 sample02.groovy.classloader

Так при запуске jsr233script sample02.groovy проверяется наличие sample02.groovy.classloader и если такой находится, то будет он использоваться.

Порядок “разрешения” полного пути для FileEntry

  1. Если явно указана параметр -clbase classloader_base_directory, то будет испольоваться переданное значение параметра
  2. Если указан параметр -cl classloader_file или classloader_file указан относительно файл скрипта, то относительно самого файла classloader_file
  1. Спецификация JSR233 определяет как реализовывать тот или иной язык для Java платформы. Что бы добавить поддержку языка (например Python) - необходимо скопировать соответ. jar файлы в каталог <CXHOME>/lib 

  2. Classpath - перменная среды/параметр java.exe указывающий на расположение скомпилированных классов java. см. https://en.wikipedia.org/wiki/Classpath_(Java).