Выполнение кода Java, указанного в текстовом файле

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

5 ответов

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

Что такое BeanShell?

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам