Clojure를 처음 테스트하고 간단한 websocket 클라이언트 응용 프로그램을 작성하려고했습니다. 라이브러리 https://github.com/stylefruits/gniazdo을 찾았으며 작동 코드 (lein run
사용)가 있습니다. 그러나 항아리에 코드를 컴파일 (중 lein jar
또는 lein uberjar
는 하나 붙어 또는 (~ 1 시간 후에 중단) 시대를 필요로)Clojure 컴파일 시간
단계 :
lein new app testing
- 수정 SRC/테스트/코어. CLJ 및 project.clj (아래 참조) 단순 들어
lein jar
(또는lein uberjar
)
내가 가진했습니다 이미 나이 소요이 매우 간단한 코드, 항아리로 컴파일합니다 :
(ns testing.core
(:gen-class))
(require '[gniazdo.core :as ws])
(def socket
(ws/connect
"wss://some.url.com/"))
(defn -main
"I don't do a whole lot ... yet."
[& args]
(ws/close socket))
project.clj : lein jar
를 실행
(defproject testing "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.8.0"]
[stylefruits/gniazdo "1.0.1"]]
:main ^:skip-aot testing.core
:aot [testing.core]
:target-path "target/%s"
:profiles {:uberjar {:aot :all}})
출력 : aferwards
$lein jar
Compiling testing.core
2017-12-11 14:15:14.813:INFO::main: Logging initialized @1352ms
아무것도를. 이 정상적인 동작입니까 (컴파일하는 데 오랜 시간이 걸립니다) 아니면 여기에 뭔가 빠졌습니까? Clojure는 매우 흥미로 보입니다. 그러나 컴파일 시간이 아주 짧은 경우에도 배포가 문제가 될 수 있습니다. 네임 스페이스가 (당신의 project.clj에 :aot [testing.core]
) 미리의 를 컴파일 할 때
다음 중 하나를 수행하십시오. 1. 최상위 레벨에서 연결하지 마십시오. 2. 'testing.core' 네임 스페이스를 사용하지 마십시오. 연결을 JAR에 어떻게 저장해야한다고 생각하십니까? – ClojureMostly