Вызов компилятора Java из приложения Common Lisp из источника Java, созданного приложением Lisp - PullRequest
1 голос
/ 24 сентября 2019

Я написал приложение на Common Lisp, которое создает исходный код Java и записывает его в файл * .java.

Я хотел бы завершить код на Lisp вызовом компилятора Java,и, наконец, запустить скомпилированный код Java.

Все из приложения Lisp.

Совет, пожалуйста.Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 25 сентября 2019

Возможно, вы захотите запустить компилятор Java как внешний процесс.Все современные реализации Common Lisp овец с ASDF, который включает в себя библиотеку IUOP (Утилиты для реализации и переносимости ОС).

Итак, попробуйте прямо сейчас:

(uiop:run-program (list "javac" "--option" "myfile.java") :output t)

The :output t выводит его на стандартный вывод.

Из-за lisp из-за ошибки появляется интерактивный отладчик.Если вы хотите ловить и красиво печатать ошибки:

(handler-case 
          (uiop:run-program (list "javac" "--stuff") :output t)
        (error (c) (format t "~a" c)))

Для асинхронного запуска используйте launch-program.

Подробнее: https://lispcookbook.github.io/cl-cookbook/os.html#running-external-programs

2 голосов
/ 24 сентября 2019

Не существует определенного языка для вызова внешних программ из CL.Однако многие реализации предоставляют способ сделать это, и есть библиотека совместимости под названием external-program , которая предоставляет общую оболочку для этой функции для многих реализаций.

Эта библиотека сама доступна через Quicklisp .

...