clojure - 导入 final类

标签 clojure noclassdeffounderror

我无法从 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--

知道发生了什么吗?

谢谢!

最佳答案

尝试导入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 docsorg.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

似乎有效。

关于clojure - 导入 final类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3879721/

相关文章:

scala - Spark 示例 NoClassDefFoundError scopt/OptionParser

android - AdMob 运行时出现间歇性 java.lang.NoClassDefFoundError

Java NoClassDefFoundError 即使 Jars 在同一文件夹中

clojure - 在Clojure中分割字串

loops - 从循环中获取值 (Clojure)

lisp - 让里面条件

java - 创建动态 jasper 报告时出现 NoClassDefFoundError

java - XSLT 未调用属于 Java 父类的方法 : ClassNotFoundException & NoClassDefFoundError

clojure - ARefs 上的奇怪计算时间调节

clojure - (gensym) 总是唯一的,`(symb#) 不是——为什么?