我是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知道我的类?
答案 0 :(得分:2)
如果要创建自己编写并且打包在jar文件中的Java类实例,请使用add-to-classpath:
(add-to-classpath '("Character.jar"))
然后,(jnew "org.example.Character")
应该为您提供Character
类的实例(假设它位于org.example
命名空间中)。