我无法从java包导入最终类。导入普通类工作正常。例如:
gtk-examples.snooping> (import 'org.gnome.gdk.MouseButton) org.gnome.gdk.MouseButton gtk-examples.snooping> (import 'org.gnome.gdk.ModifierType) ; Evaluation aborted. gtk-examples.snooping>
最后一次导入会产生NoClassDefFoundError。这是一个更完整的输出:
Could not initialize class org.gnome.gdk.ModifierType [Thrown class java.lang.NoClassDefFoundError] Restarts: 0: [QUIT] Quit to the SLIME top level Backtrace: 0: java.lang.Class.forName0(Native Method) 1: java.lang.Class.forName(Class.java:186) 2: gtk_examples.snooping$eval2063.invoke(NO_SOURCE_FILE:1) 3: clojure.lang.Compiler.eval(Compiler.java:5424) 4: clojure.lang.Compiler.eval(Compiler.java:5415) 5: clojure.lang.Compiler.eval(Compiler.java:5391) 6: clojure.core$eval.invoke(core.clj:2382) --more--
知道发生了什么事吗?
谢谢!
答案 0 :(得分:3)
尝试导入org.gnome.gdk.ModifierType
实际上会先给您一个不同的错误,然后会给出您所看到的错误。
user> (import 'org.gnome.gdk.ModifierType)
; Evaluation aborted.
org.freedesktop.bindings.FatalError:
You *must* call Gtk.init() before using anything else in java-gnome!
user> (import 'org.gnome.gdk.ModifierType)
; Evaluation aborted.
java.lang.NoClassDefFoundError: Could not initialize class org.gnome.gdk.ModifierType
每the docs,org.gnome.gtk.Gtk/init
看起来像:
public static void init(String[] args)
所以重新启动JVM并试试这个:
user> (org.gnome.gtk.Gtk/init (make-array String 0))
nil
user> (import 'org.gnome.gdk.ModifierType)
org.gnome.gdk.ModifierType
似乎工作。
答案 1 :(得分:1)
我缺乏Java专有技术来给出正确的答案,但是你可能正在寻找import-static?
(import-static class& fields-and-methods)
导入指定的静态字段和/或 类的静态方法为 当前的(私人)符号 命名空间。