从 Common Lisp 应用程序调用 Java 编译器,在 Lisp 应用程序创建的 Java 源代码上



我用Common Lisp编写了一个应用程序,它生成Java源代码并将其写入*.java文件。

我想通过调用 Java 编译器来完成 Lisp 代码,最后运行编译后的 Java 代码。

所有这些都来自 Lisp 应用程序。

您可能希望将 Java 编译器作为外部进程运行。所有现代的Common Lisp实现都与ASDF合作,其中包括其UIOP库(Utilities for Implementation- and OS- Portability(。

所以,直接试试这个:

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

: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

没有语言定义的方法可以从 CL 调用外部程序。 然而,许多实现提供了一种方法来做到这一点,并且有一个称为外部程序的兼容性库,它为许多实现提供了此功能的通用包装器。

这个库本身可以通过Quicklisp获得。

最新更新