2017-05-24 5 views
2

에서 작동하지 않습니다. 내 자바 응용 프로그램에서 생성 된 항아리를 수입하고 스레드에서 "주요"java.lang.UnsupportedOperationException가 오류Clojure의 : 세대 급이 내 myns/junk.clj 파일</p> 문제없이 <pre><code>(ns myns.junk (:gen-class :name booklist.util :methods [[sq [int] int]])) (defn sq [x] (* x x)) </code></pre> <p>내가 실행 해요 <code>lein ubserjar</code> 자바 응용 프로그램

예외를 생성이

package javaapplication1; 

import booklist.util; 

public class JavaApplication1 { 
    public static void main(String[] args) { 
     util u = new util(); 
     System.out.println(u.sq(45)); 
    } 
} 

실행했습니다 평방 (myns.junk/(JavaApplication1.java:14) C : \ Users \ X750JA \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor에서 (booklist.util.sq (알 수없는 출처)) at javaapplication1.JavaApplication1.main -snippets \ run.xml : 53 : Java가 반환되었습니다 : 1 BUILD FAILED (총 시간 : 0 초)

무엇이 빠졌는지, 이상적으로이 내용을 자세히 설명하는 문서가 있습니까? 인수의 수가 잘못을 (:


편집, 알레한드로의 대답에 따라, 지금 스레드 "기본"clojure.lang.ArityException에 오류

예외를 생성이

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

시도 2) 전달 : junk/-sq at clojure.lang.AFn.throwArity (AFn.java:429) at clojure.lang.AFn.invoke (AFn.java:36) at booklist.util.sq (알 수 없음 소스)(JavaApplication1.java:14) C : \ Users \ X750JA \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-snippets \ run.xml : 53 : Java 반환 : 1 BUILD FAILED 총 시간 : 0 초)으로


내가 함께 상처 무슨 일이 그래서 내가 정적 메소드를 선언하고 선두를 가지고 실제 방법을 정의 할 필요가 보이는이

(ns myns.junk 
    (:gen-class 
    :name booklist.util 
    :methods [#^{:static true} [sq [int] int]])) 

(defn -sq [x] (* x x)) 

(-sq 7) ; works - 49 

했다 이름에 대쉬.

답변

2

당신은

(defn -sq 
    "A Java-callable wrapper around the 'sq' function." 
    [n] 
    (sq n)) 

또한 Clojure의 파일이 뭔가를 놓치고, 당신은 정적으로 메소드를 정의해야합니다.

나는 정식 문서가 여기에있다 생각 : 응답에 대한 https://clojure.org/reference/compilation

+0

감사합니다 - 그 시도 내 질문을 업데이트 - 내가 실제로을해야한다고 생각 :(좋아 –

+0

@AdamRackis하지 않습니다 여전히 자바 보인다 정적 방법 –