导入最终课程

发布于 2024-09-26 10:47:24 字数 868 浏览 7 评论 0原文

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

知道发生了什么吗?

谢谢!

I'm failing to import final classes from a java package. Importing normal classes works fine. For example:

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> 

The last import yields a NoClassDefFoundError. Here is a more complete output:

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--

Any idea of what is going on?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

新人笑 2024-10-03 10:47:24

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

根据文档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

似乎可以工作。

Trying to import org.gnome.gdk.ModifierType actually gives you a different error first, then gives you the error you're seeing.

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

Per the docs, org.gnome.gtk.Gtk/init looks like:

public static void init(String[] args)

So restart the JVM and try this:

user> (org.gnome.gtk.Gtk/init (make-array String 0))
nil
user> (import 'org.gnome.gdk.ModifierType)
org.gnome.gdk.ModifierType

Seems to work.

悲念泪 2024-10-03 10:47:24

我缺乏 Java 知识来给出正确的答案,但也许 import-static 就是您正在寻找的?

(导入静态类和字段和方法)

导入指定的静态字段和/或
类的静态方法为
当前的(私有)符号
命名空间。

http://clojuredocs.org/v/487

I'm lacking the Java know-how to give a proper answer, but maybe import-static is what you are looking for?

(import-static class & fields-and-methods)

Imports the named static fields and/or
static methods of the class as
(private) symbols in the current
namespace.

http://clojuredocs.org/v/487

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文