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

在Lisp应用程序创建的Java源代码上,从公共Lisp应用程序调用Java编译器,java,lisp,common-lisp,Java,Lisp,Common Lisp,我用CommonLisp编写了一个应用程序,它生成Java源代码并将其写入*.Java文件 我想通过调用Java编译器来完成Lisp代码,最后运行编译后的Java代码 全部来自Lisp应用程序。 请给我一些建议。提前感谢。没有语言定义的方法从CL调用外部程序。但是许多实现提供了这样做的方法,并且有一个名为的兼容性库,它为许多实现提供了此功能的通用包装器 此库本身可通过使用。没有语言定义的方法从CL调用外部程序。但是许多实现提供了一种方法来实现这一点,并且有一个名为的兼容性库,它为许多实现提供了此

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

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

全部来自Lisp应用程序。


请给我一些建议。提前感谢。

没有语言定义的方法从CL调用外部程序。但是许多实现提供了这样做的方法,并且有一个名为的兼容性库,它为许多实现提供了此功能的通用包装器


此库本身可通过使用。

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


此库本身可通过。

获得。您可能希望将Java编译器作为外部进程运行。所有现代通用Lisp实现都使用ASDF,其中包括其IUOP库(用于实现和操作系统可移植性的实用程序)

因此,请直接尝试以下方法:

(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)))
要异步运行,请使用
启动程序


阅读更多信息:

您可能希望将Java编译器作为外部进程运行。所有现代通用Lisp实现都使用ASDF,其中包括其IUOP库(用于实现和操作系统可移植性的实用程序)

因此,请直接尝试以下方法:

(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)))
要异步运行,请使用
启动程序


阅读更多信息:

请参见另一个可用的是
uiop:run program
uiop:launch program
,它们是ASDF的一部分,因此几乎无处不在。另外还有
uiop:run program
uiop:launch program
,它们是ASDF的一部分,因此几乎无处不在。