【问题标题】:Trouble with armed bear common lisp--calling user defined classes from repl?武装熊常见的 lisp 有问题 - 从 repl 调用用户定义的类?
【发布时间】:2012-07-12 01:00:04
【问题描述】:

我对 lisp 很陌生,对 java 也很陌生。我正在用 java 开发一个简单的游戏,我认为与游戏交互会很有趣,因为我正在通过 REPL 对其进行编码。我一直在关注 Practical Common Lisp,并且对基本的函数结构有所了解。我开始使用 armed 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") 时,我得到一个 "class not found" 错误。是否可以让 abcl 从 lisp 中了解我的课程?

【问题讨论】:

标签: lisp common-lisp abcl


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    相关资源
    最近更新 更多