armed bear common lisp有问题--从repl调用用户定义的类?

armed bear common lisp有问题--从repl调用用户定义的类?,lisp,common-lisp,abcl,Lisp,Common Lisp,Abcl,我对lisp非常陌生,对java也非常陌生。我当时正在用java开发一个简单的游戏,我认为通过REPL编写游戏时,与游戏交互会很有趣。我一直在遵循实用的通用Lisp,我有基本的功能结构的知识。我开始使用armed bear common lisp(一种在java虚拟机上运行的实现),并能够编写一些用于创建GUI的基本函数,例如: (defconstant +jframe+ "javax.swing.JFrame") (defun make-frame (length width &ke

我对lisp非常陌生,对java也非常陌生。我当时正在用java开发一个简单的游戏,我认为通过REPL编写游戏时,与游戏交互会很有趣。我一直在遵循实用的通用Lisp,我有基本的功能结构的知识。我开始使用armed bear common lisp(一种在java虚拟机上运行的实现),并能够编写一些用于创建GUI的基本函数,例如:

(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”)时,我得到一个“未找到类”错误。可以让abcl从lisp中知道我的类吗?

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

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

然后,
(jnew“org.example.Character”)
应该给你一个
Character
类的实例(假设它在
org.example
命名空间中)。

最近的ABCL手册:最好询问ABCL特定的问题,并在ABCL邮件列表上提出改进建议。请参见“请澄清:您考虑哪些类-jars中的Java类或使用
defclass
定义的Lisp CLOS类?Java中的所有类都有包前缀。所以您应该提供类似于
(jclass“my.package.Character”)