Я также хотел бы знать правильный путь , но вы всегда можете заглянуть в:
$ cat .git/packed-refs
или:
$ cat .git/refs/tags/*
Вы можете преобразовать его в Clojure code, и компилятор Clojure превратит его в байт-код.
Groovy, BeanShell или любой другой язык сценариев, основанный на JVM, имеет такую возможность для внедрения, изменения, добавления и запуска кода во время выполнения. Фактически все языки сценариев интерпретируются, поэтому фактически они не компилируются во время выполнения.
вы можете разветвить такой процесс
Process p = Runtime.getRuntime().exec("java -classpath "..." SomeClassContainingMain ...other arguments);
//you need to consume the outputs of the command if output/error is large otherwise the process is going to hang if output/error buffer is full. and create a seperate thead for it (not created here).
log.debug("PROCESS outputstream : " + p.getInputStream() );
log.debug("PROCESS errorstream : " + p.getErrorStream());
p.waitFor(); // Wait till the process is finished
, а также скомпилировать и запустить его.
Избавьте себя от хлопот и используйте BeanShell , как указано здесь Выполнение кода Java, указанного в текстовом файле .
Что такое BeanShell?
BeanShell - это небольшой бесплатный встраиваемый Интерпретатор исходного кода Java с объектом особенности языка сценариев, письменные в Java. BeanShell динамически выполняет стандартный синтаксис Java и расширяет его с помощью общих сценариев такие удобства, как свободные типы, команды и закрытие методов, например те, что на Perl и JavaScript.
Вы можете использовать BeanShell в интерактивном режиме для экспериментов и отладки Java а также расширить ваши приложения по-новому. Создание сценариев для Java сам к большому разнообразию приложения, включая быстрое прототипирование, расширение пользовательских сценариев, движки правил, настройка, тестирование, динамическое развертывание, встроенные системы, и даже обучение Java.
BeanShell небольшой и встраиваемый, поэтому вы можете вызвать BeanShell со своего Java приложения для выполнения кода Java динамически во время выполнения или для обеспечения расширяемость ваших приложений. В качестве альтернативы вы можете использовать автономный Скрипты BeanShell для управления Java Приложения; работа с Java объекты и API динамически. поскольку BeanShell написан на Java и запускается в той же виртуальной машине, что и ваше приложение, вы можете свободно передавать ссылки на «живые» объекты в скрипты и возврат их в качестве результатов.
Короче говоря, BeanShell динамически интерпретируемая Java, плюс скрипт язык и гибкая среда все в одном чистом пакете.