Выполнение кода Java, указанного в текстовом файле - PullRequest
4 голосов
/ 29 июня 2009

У меня есть набор кода Java в текстовом файле. Могу ли я читать строку за строкой из текстового файла и выполнять команды, как в функции eval javascript? Заранее спасибо

Ответы [ 5 ]

8 голосов
/ 29 июня 2009

Попробуйте использовать BeanShell . Со вступительной страницы:

Что такое BeanShell?

BeanShell - это маленький, бесплатный, встраиваемый Исходный интерпретатор Java с объектом возможности языка сценариев, написано на Яве. BeanShell динамически выполняет стандартный синтаксис Java и расширяет его с помощью общих сценариев удобства, такие как свободные типы, команды и закрытия методов, такие как те, в Perl и JavaScript.

Вы можете использовать BeanShell в интерактивном режиме для экспериментов и отладки Java а также для расширения ваших приложений по-новому. Создание сценариев Java предоставляет сам по себе широкий спектр приложения, включая быстрое прототипирование, расширение пользовательских сценариев, правила движков, настройка, тестирование, динамическое развертывание, встроенные системы, и даже Java образование.

BeanShell небольшой и встраиваемый, поэтому вы можете вызывать BeanShell из вашей Java приложения для выполнения кода Java динамически во время выполнения или для обеспечения расширяемость в ваших приложениях. Кроме того, вы можете использовать автономный Скрипты BeanShell для управления Java Приложения; работа с Java объекты и API динамически. поскольку BeanShell написан на Java и работает в той же виртуальной машине, что и ваше приложение, Вы можете свободно передавать ссылки на «живые» объекты в скрипты и возврат их как результаты.

Короче говоря, BeanShell динамически интерпретируемая Java, плюс сценарии язык и гибкая среда все в одной чистой упаковке.

3 голосов
/ 29 июня 2009

Может быть, было бы проще начать искать языки сценариев, которые очень хорошо поддерживаются Java VM.

Groovy первым приходит на ум, он имеет Java-подобный синтаксис.

3 голосов
/ 29 июня 2009

Нет. Java - это скомпилированный язык, поэтому такое поведение невозможно, если вы сначала не вызовете компилятор. (И нет никакой гарантии, что на машине с Java есть компилятор Java.)

1 голос
/ 29 июня 2009

Возможно. Это можно сделать нетривиально, используя API компилятора . Но вам действительно лучше написать конфигурацию XML, которая контролирует вашу программу, а не разрешать выполнение произвольного кода в текстовом файле.

0 голосов
/ 29 июня 2009

Вы можете использовать Janino для компиляции сгенерированного файла * .java. После того, как вы скомпилировали свой файл, вы можете загрузить файл * .class и вызвать метод по отражению.

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