武装熊常见的lisp问题 - 从repl调用用户定义的类?

时间:2012-07-12 01:00:04

标签: lisp common-lisp abcl

我是lisp的新手,也是java的新手。我正在研究java中的一个简单的游戏,我认为当我通过REPL编码时,与游戏交互会很有趣。我一直在关注Practical Common Lisp并且我对基本功能结构有所了解。我开始使用arm bear common lisp - 一个在java虚拟机上运行的实现 - 并且能够编写一些用于创建guis的基本函数,例如:

(defconstant +jframe+ "javax.swing.JFrame")

(defun make-frame (length width &key visible)
  "Create a +jframe+"
  (let ((frame (jnew (jconstructor +jframe+))))
    (jcall (jmethod +jframe+ "setSize" "int" "int")
       frame length width)
    (if visible (frame-is-visible t frame))
    frame))

但是我无法弄清楚如何从lisp访问用户定义的类。作为一个整体的实现似乎很难记录,我发现难以开始使用来自lisp内的java特定事物。例如,我有一个名为“Character”的编译字符类。但是当我调用(jclass“Character”)时,我得到一个“找不到类”的错误。是否有可能从lisp中使abcl知道我的类?

1 个答案:

答案 0 :(得分:2)

如果要创建自己编写并且打包在jar文件中的Java类实例,请使用add-to-classpath:

(add-to-classpath '("Character.jar"))

然后,(jnew "org.example.Character")应该为您提供Character类的实例(假设它位于org.example命名空间中)。