Установить компилятор Java на сервере? - PullRequest
1 голос
/ 09 марта 2011

Есть ли способ настроить компилятор Java на сервере для компиляции загруженных скриптов?В моем случае пользователи могут загружать пользовательские сценарии / плагины Java для программы.Затем сервер скомпилирует эти сценарии и поместит файл .jar в папку.Затем приложение (для которого пользователи разрабатывают) будет запрашивать у сервера доступные скрипты / плагины для загрузки и использования.Это возможно?Если да, то как?

* РЕДАКТИРОВАТЬ: Я не могу установить JDK на свой сервер, так как это общий сервер.Есть ли способ скомпилировать Java без установки чего-либо (глупый вопрос, который я знаю, но не больно задавать ..)?У меня есть php .... не то, чтобы это помогло любому.

Ответы [ 3 ]

3 голосов
/ 09 марта 2011

Я ответил на аналогичный вопрос здесь:

Динамическое выполнение кода

Короче говоря, API компилятора Java позволяет создавать скомпилированные файлы классов Java из строк Java, которые содержат исходный код.

1 голос
/ 09 марта 2011

Это определенно возможно.В основном вам просто нужен сервер для сохранения загруженного кода на диск, а затем используйте Runtime#exec() для вызова javac файла.Однако вам может потребоваться пользовательский Classloader, если ваш сервер собирается динамически добавлять новые классы в его путь к классам.

NB , позволяющий пользователям выполнять произвольную Javaна вашем сервере открывается дыра в безопасности.

Пользовательский загрузчик классов рекомендует прочитать:

0 голосов
/ 09 марта 2011

РЕДАКТИРОВАТЬ: Извините, если это не то, что вы ищете.Я предположил, что вы думаете о непрерывной интеграции.

Обычно это делается с помощью системы контроля версий и сборки, и это называется "непрерывная интеграция".Я лично использую Hg (ртутный) + Maven + Continuum.

Итак, что происходит, когда я фиксирую новые сценарии в Mercurial, Continuum подхватит это и позволит maven проверить изменения и собрать (скомпилировать) проект.Обычно в это время также выполняются некоторые модульные тесты или даже интеграционные тесты / тесты производительности и т. Д.

Полученный двоичный файл можно получить через веб-интерфейс (GUI) Continuum.

Вот как это выглядит .

Что касается загрузкии с помощью многих людей «развернуть» полученный артефакт (jar) в репозитории maven, из которого другие приложения могут загрузить jar и использовать его.Развертывание также может быть автоматизировано с помощью Maven.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...