为什么clojure在使用代理时与java.lang.IllegalAccessError一起出错

为什么clojure在使用代理时与java.lang.IllegalAccessError一起出错,clojure,interface,twitter4j,Clojure,Interface,Twitter4j,我正在尝试使用Twitter4j访问用户流。我遇到的问题是,我无法实现一个接口,然后将其用作侦听器 这是我的全部代码 (ns dameon.temporal-lobe.twitter (:import [twitter4j TwitterStreamFactory StatusListener StreamListener] [twitter4j.conf ConfigurationBuilder]) (:require [clojure.e

我正在尝试使用Twitter4j访问用户流。我遇到的问题是,我无法实现一个接口,然后将其用作侦听器

这是我的全部代码

(ns dameon.temporal-lobe.twitter
      (:import [twitter4j TwitterStreamFactory StatusListener StreamListener]
               [twitter4j.conf ConfigurationBuilder])
      (:require [clojure.edn :as edn :only [read-string]]))



;;The class that handles the stream data
(def status-listener
  (proxy [StatusListener] []
   (onStatus [status]
     (println status))
   (onDeletionNotice [status-deletion-notice])
   (onTrackLimitationNotice [number-of-limited-statuses])
   (onStallWarning [warning])
   (onException [ex]
     (.printStackTrace ex))
   (onScrubGeo [user-id up-to-status-id])))

(class status-listener)

;;Connect to the stream and add listener
(def creds (get (edn/read-string (slurp "creds.edn")) :twitter))

(-> (ConfigurationBuilder.)
    (.setDebugEnabled true)
    (.setOAuthConsumerKey (creds :consumer-key))
    (.setOAuthConsumerSecret (creds :consumer-secret))
    (.setOAuthAccessToken  (creds :access-token))
    (.setOAuthAccessTokenSecret (creds :access-secret))
    (.build)
    (TwitterStreamFactory.)
    (.getInstance)
    (.addListener status-listener)
    (.sample))
这就是我得到的错误

 Unhandled java.lang.IllegalAccessError
   tried to access class twitter4j.StreamListener from class
   dameon.temporal_lobe.twitter$eval11235
为什么会这样?这些接口不是私有的。它们只是简单的接口。发生了什么?

假设,
twitter4j.StreamListener
声明时没有明确的访问修饰符,因此它只在自己的包中可见–请参见Gosling,Joy,Steele,Bracha,Buckley,§6.6.1确定可访问性:

如果一个类或接口类型被声明为公共的,那么它可以被任何代码访问,前提是声明它的编译单元(§7.3)是可观察的

如果类或接口类型是通过包访问来声明的,那么只能从声明它的包中访问它

未声明访问修饰符的类或接口类型隐式具有包访问权限