Ceci est mon monen/fichier junk.cljClojure: gen-classe ne fonctionne pas dans Java app
(ns myns.junk
(:gen-class
:name booklist.util
:methods [[sq [int] int]]))
(defn sq [x] (* x x))
Je suis en cours d'exécution lein ubserjar
sans problème. J'ai importé le pot généré dans mon application java, puis couru cette
package javaapplication1;
import booklist.util;
public class JavaApplication1 {
public static void main(String[] args) {
util u = new util();
System.out.println(u.sq(45));
}
}
qui produit une erreur
Exception dans le thread "principal" java.lang.UnsupportedOperationException: carrés (myns.junk/-sq non défini?) at booklist.util.sq (source inconnue) at javaapplication1.JavaApplication1.main (JavaApplication1.java:14) C: \ Utilisateurs \ X750JA \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ exécuteur -snippets \ run.xml: 53: Java renvoyé: 1 BUILD FAILED (temps total: 0 seconde)
Qu'est-ce qui me manque, et idéalement, y a-t-il des documents disponibles qui expliquent ces choses en détail?
Modifier, par la réponse de Alejandro, j'ai essayé ce
(ns myns.junk
(:gen-class
:name booklist.util
:methods [[sq [int] int]]))
(defn sq [x] (* x x))
(defn -sq
"A Java-callable wrapper around the 'sq' function."
[n]
(sq n))
qui produit maintenant erreur
Exception dans le thread "principal" clojure.lang.ArityException: Mauvais nombre args (2) passé à: junk/-sq à clojure.lang.AFn.throwArity (AFn.java:429) à clojure.lang.AFn.invoke (AFn.java:36) à booklist.util.sq (Inconnu Source) at javaapplication1.JavaApplication1.main (JavaApplication1.java:14) C: \ Utilisateurs \ X750JA \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-snippets \ run.xml: 53: Java renvoyé: 1 BUILD FAILED (temps total: 0 secondes)
ce que je blesse avec était ce
(ns myns.junk
(:gen-class
:name booklist.util
:methods [#^{:static true} [sq [int] int]]))
(defn -sq [x] (* x x))
(-sq 7) ; works - 49
il semble donc que je dois déclarer la méthode statique, et définir la méthode réelle d'avoir un chef de file dash dans le nom.
Merci pour la réponse - je mis à jour ma question avec cette tentative - il semble Java ne fonctionne toujours pas comme il :( –
@AdamRackis Je pense qu'il devrait en fait être un méthode statique –