20

私は Clojure を初めて使用し、Clojure プログラムをどのように実行すればよいかについて本当に混乱しています。

私の最初の質問は、すべての Clojure プログラムが Leiningen パッケージであるかどうかです。書きたい場合は、新しい Leiningen プロジェクトを作成することから始めますか? Pythonに似たClojureプログラムを実行する方法はありますか(つまりpython pyfile.py)

これはばかげた質問かもしれませんが、私はしばらくこれについて混乱しており、私が読んだいくつかの本/チュートリアルはこの質問に適切に答えていないようです. これまで、Clojure コードを REPL だけで実行してきました。

4

7 に答える 7

27

ライニンゲンをすぐに見つけたので、正しい軌道に乗っています。ばかげた質問ではありません。答えると、他のユーザーがより良い Google 検索結果を得るのに役立つからです。

  • 各 clojure プログラムは個別の leiningen プロジェクトである必要があるlein new project-nameため、それぞれに対して実行します。

  • java -jar myproject-standalone.jarClojure プロジェクトをビルドした結果は、たとえばJava プロジェクトで実行される JAR ファイルと同じです。

  • leiningen は、Java -jar を呼び出すだけの .sh ファイルを生成するラッパー シェル スクリプトを作成できます。

  • 仕事で本番環境で clojure プログラムを実行するときは、それらを git からチェックアウトしてからlein runディレクトリを呼び出すだけです (実際には Jenkins がこれを行います)。

于 2012-06-05T19:12:33.650 に答える
9

Arthur Ulfeldt の優れた回答に追加することの 1 つは、lein が project.clj を作成し、そこにメイン関数 (プログラムの実行が開始される関数) を定義できることです。デフォルトでは、Leiningen は次のようなファイルに main 関数を作成しますcore.clj

(defproject music "1.0.0-SNAPSHOT"
  :description "A workspace for my music experiments"
  :dependencies [
    [org.clojure/clojure "1.3.0"]
    [org.clojure/math.combinatorics "0.0.1"]
  ]
  :main music.core)

今、私のプロジェクトは以下を使用して実行できます:

lein run

music.core のメイン関数が実行されます。

于 2012-06-05T20:31:12.990 に答える
8

質問の一部に答えるには: 「Python に似た Clojure プログラムを実行する方法はありますか?」実際には、次のような clojure スクリプト (と呼ばれるhello.clj)を実行できます。

(println "Hello!")

このような:

clojure hello.clj

編集:以下はすべてのシステムで機能するはずです:

java -jar <path-to-clojure-jar>/clojure.jar hello.clj

私のシステムでは、clojure.jar ファイルは /usr/share/clojure/clojure.jar にあります。clojure を起動する linux コマンドは、上記のようなコマンドを内部で実行するだけです。

于 2013-09-06T02:59:00.540 に答える
6

おそらく最も簡単な方法は、lein-execClojure スクリプトを実行するために使用することです。

http://charsequence.blogspot.in/2012/04/scripting-clojure-with-leiningen-2.html

于 2012-06-06T12:29:36.337 に答える
2

私のbash clojureスクリプト:

#!/bin/sh

export CLOJURE_EXT=$HOME/.clojure
export CLOJURE_OPTS="-Xmx1g -server"

LIBS=$(ls -1 $CLOJURE_EXT/* 2> /dev/null)
export CLASSPATH=.:$CLOJURE_EXT:$CLASSPATH:"$(echo "$LIBS" | tr \\n :)"

JAVA=${CLOJURE_JAVA:-java}
OPTS=${CLOJURE_OPTS:-}
MAIN=${CLOJURE_MAIN:-clojure.main}

breakchars="(){}[],^%$#@\"\";:''|\\"

if [ $# -eq 0 ]; then
    exec rlwrap --remember -c -b $breakchars \
        -f $HOME/.clj_completions \
        --history-filename=$HOME/.clj_history --histsize=1000000 \
        $JAVA $OPTS $MAIN -i $HOME/.clojure.clj --repl
else
    exec $JAVA $OPTS $MAIN "$@"
fi

それらを $HOME/bin/clojure に保存し、chmod +x $HOME/bin/clojure に保存し、clojure.jar とサードパーティ ライブラリを $HOME/.clojure にコピーします。python pyfile.pyclojure your_program.cljとして実行できます。

于 2012-06-06T00:47:22.143 に答える
1

更新として、clojure プログラムを処理する簡単な方法は、leiningen を使用することです。

小さな clojure スクリプトを実行する場合は、lein-execを使用します

于 2014-12-26T01:24:47.597 に答える