【问题标题】:Run an ABCL code that uses cl-cppre运行使用 cl-cppre 的 ABCL 代码
【发布时间】:2015-03-26 04:17:09
【问题描述】:

参考我之前的问题, Executing a lisp function from Java 我能够使用 ABCL 从 Java 调用 lisp 代码。 但问题是,现有的 lisp 代码使用 CL-PPCRE 包。 我无法编译代码,因为它说“找不到 CL-PPCRE”。 我尝试了不同的方法来添加该软件包, 包含 1)how does one compile a clisp program which uses cl-ppcre? 2)https://groups.google.com/forum/#!topic/cl-ppcre/juSfOhEDa1k

不工作! 另一件事是,执行(编译文件 aima.asd)工作得非常好,尽管它也需要 cl-pprce

(defpackage #:aima-asd
(:use :cl :asdf))

(in-package :aima-asd)

(defsystem aima
  :name "aima"
  :version "0.1"
  :components ((:file "defpackage")
           (:file "main" :depends-on ("defpackage")))
   :depends-on (:cl-ppcre))

最终的java代码是

interpreter.eval("(load \"aima/asdf.lisp\")");
interpreter.eval("(compile-file \"aima/aima.asd\")");
interpreter.eval("(compile-file \"aima/defpackage.lisp\")");
interpreter.eval("(in-package :aima)");
interpreter.eval("(load \"aima/aima.lisp\")");
interpreter.eval("(aima-load 'all)");

错误信息是

Error loading C:/Users/Administrator.NUIG-1Z7HN12/workspace/aima/probability/domains/edit-nets.lisp at line 376 (offset 16389)
#<THREAD "main" {3A188AF2}>: Debugger invoked on condition of type READER-ERROR
  The package "CL-PPCRE" can't be found.
[1] AIMA(1): 

谁能帮帮我?

【问题讨论】:

  • 请显示您收到的确切错误消息;从终端/REPL/等复制并粘贴它。是找不到package,还是function,还是别的什么?
  • 我刚做了。谢谢指出

标签: java lisp common-lisp abcl cl-ppcre


【解决方案1】:

您需要先加载cl-ppcre,然后才能使用它。您可以使用(asdf:load-system :aima) 来做到这一点,前提是您将 aima 和 cl-ppcre 都放入您的 ASDF 搜索的位置。

【讨论】:

  • 我发现这样做非常混乱和技术性很强,它给了我错误,所以我使用了 QuickLisp,加载了 quicklisp.lisp 并使用了语句:interpreter.eval("( load \"aima /quicklisp.lisp\")");解释器.eval("(加载\"aima/quicklisp/setup.lisp\")"); interpreter.eval("(in-package :ql)");解释器.eval("(ql:quickload :cl-ppcre)");
  • @HamdaBinteAjmal,您应该将其发布为答案;这是一个很好的解决方案。 (不过,我认为包装内的部分是多余的。)
【解决方案2】:

我使用 QuickLisp 来添加 cl-ppcre(因为没有其他东西对我有用)。 这就是我所做的

(load \"~/QuickLisp.lisp\")")
(quicklisp-quickstart:install) 
(load "~/quicklisp/setup.lisp")
(ql:quickload :cl-ppcre)

前 2 行只是一次性的。安装 quickLisp 后,您可以从第 3 行开始。

【讨论】:

  • 还有ql:add-to-init-file,将Quicklisp添加到CL实现的iinit文件中,使其在启动时自动加载。
猜你喜欢
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 2019-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多