Импорт финальных классов - PullRequest
       25

Импорт финальных классов

1 голос
/ 07 октября 2010

Я не могу импортировать окончательные классы из пакета 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--

Есть идеи о том, что происходит?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 октября 2010

Попытка импорта 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

Кажется, работает.

1 голос
/ 07 октября 2010

Мне не хватает ноу-хау Java, чтобы дать правильный ответ, но, может быть, вам нужен статический импорт?

(класс и поля import-static-и-методы)

Импортирует именованные статические поля и / или статические методы класса как (частные) символы в текущем пространстве имен.

http://clojuredocs.org/v/487

...