2010-03-23 15 views
4

J'appelle la bibliothèque twitter4j en utilisant Clojure comme ceci:Comment appeler une méthode non publique d'une classe publique dans Clojure?

(def twitter (. (TwitterFactory.) getInstance)) 

Cela fonctionne bien quand je l'appelle comme un script. Mais quand j'utilise gen-class, je reçois:

java.lang.IllegalArgumentException: Can't call public method of non-public class: public java.lang.Object twitter4j.TwitterFactoryBase.getInstance() 

Y a-t-il une solution de contournement pour cela?

+0

Pouvez-vous poster un squelette de votre code de classe gen? –

Répondre

0

Essayez:

(def twitter (.getInstance (new TwitterFactory))) 
+0

Cela ne fait aucune différence. Pourquoi le ferais-tu? – sramsay

+0

Je ne sais pas quelle est la cause de la différence (étant un débutant clojure). Cependant cela fonctionne pour moi :) – lazy1

+0

Attendez. Vraiment? Je pensais que la différence n'était que du sucre syntaxique (en fait, je préfère ton chemin - il me semble "lispier"). – sramsay