Как я могу скомпилировать и развернуть класс Java во времени выполнения?

Я также хотел бы знать правильный путь , но вы всегда можете заглянуть в:

$ cat .git/packed-refs 

или:

$ cat .git/refs/tags/*
19
задан Community 23 May 2017 в 10:29
поделиться

5 ответов

Используйте API компилятора Java 6 .

18
ответ дан 30 November 2019 в 03:59
поделиться

Вы можете преобразовать его в Clojure code, и компилятор Clojure превратит его в байт-код.

4
ответ дан 30 November 2019 в 03:59
поделиться

Groovy, BeanShell или любой другой язык сценариев, основанный на JVM, имеет такую ​​возможность для внедрения, изменения, добавления и запуска кода во время выполнения. Фактически все языки сценариев интерпретируются, поэтому фактически они не компилируются во время выполнения.

2
ответ дан 30 November 2019 в 03:59
поделиться

вы можете разветвить такой процесс

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

, а также скомпилировать и запустить его.

1
ответ дан 30 November 2019 в 03:59
поделиться

Избавьте себя от хлопот и используйте 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, плюс скрипт язык и гибкая среда все в одном чистом пакете.

1
ответ дан 30 November 2019 в 03:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: