Java компиляция в оперативной памяти

У этого есть один аргумент, имя каталога, которое ls зацикливается внутри:

ls <path>/

Обратите внимание, что это не один аргумент:

ls <path>/*horiz

Здесь, Оболочка сама раскрывает <path>/*horiz во все совпадающие файлы, а затем запускает ls с этим списком совпадений.

Вы можете попробовать что-то вроде этого:

ls <path>/ | grep -c 'horiz
10
задан Community 23 May 2017 в 12:34
поделиться

4 ответа

Вы могли бы найти что-то как носорог или отличный более полезным на практике.

4
ответ дан 3 December 2019 в 18:02
поделиться

JDK6 имеет компилятор Java API. Однако это не обязательно очень просто в использовании.

Быстрый Google потянул это использование в качестве примера.

12
ответ дан 3 December 2019 в 18:02
поделиться

Я думаю, что Ваш лучший выстрел будет Янино. Это позволит Вам скомпилировать код во времени выполнения и назвать его от остальной части Вашей программы. Мы используем его в некоторых наших системах, чтобы позволить нам динамично обновить некоторые классы.

Это не свободно. Это работает хорошо, но это использует пространство permgen каждый раз, когда Вы загружаете новый класс (или версия класса), таким образом, у Вас закончится память в конечном счете, если у Вас будет (действительно) длительный процесс (или что-то, что загружает много новых классов), но можно изменить сумму пространства permgen в JVM для выгоняния того барьера с квартиры настоящий путь, если это - проблема.

Янино является на самом деле компилятором, но Вы видели, как он вводит байт-код, если необходимо действовать на том уровне. Вы, возможно, должны закончить тем, что делали classloader или использовали компилятор Java API в качестве предложенного Tom Hawtin.

6
ответ дан 3 December 2019 в 18:02
поделиться

Можно получить доступ к компилятору, пока tools.jar файл от JDK находится на пути к классу. Документация для него здесь. API не так прост как eval() на некоторых интерпретируемых языках, но это там.

Вам, возможно, также придется войти в некоторый странный код ClassLoder для фактического выполнения того кода, я не полностью уверен в этом.

0
ответ дан 3 December 2019 в 18:02
поделиться
Другие вопросы по тегам:

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