質問

ここでは、環境可変クラスパスを確認します
daniel@daniel-laptop:〜/ps/clojure/project/ring-tutorial $ echo $ classpath
/home/daniel/ps/clojure/Projects/Ring-Tutorial/src

ここで、Javaがそれが何だと思っているのかを確認します。
Daniel@Daniel-Laptop:〜/PS/Clojure/Projects/Ring-Tutorial $ Lein Repl
Clojure 1.1.0ユーザー=>(System/getProperty "Java.class.path")
"src/:classes/:/home/daniel/.m2/repository/leiningen/leiningen/1.1.0/leiningen-1.0-standalone.jar:lib/clojure-1.1.0.jar:lib/servet-api -2.5-6.1.14.jar:lib/commons-io-1.4.jar:lib/clj-stacktrace-0.1.0.jar:lib/clojure-contrib-1.1.0.jar:lib/ring-devel-0.2 .0.jar:lib/jetty-util-6.1.14.jar:lib/clj-html-0.1.0.jar:lib/ring-jetty-adapter-0.2.0.jar:lib/jetty-6.1.14 .jar:lib/ring-core-0.2.0.jar:lib/commons-fileupload-1.1.jar:lib/ring-servlet-0.2.0.jar:lib/commons-codec-1.4.4.jar: "

ご覧のとおり、2つの応答は完全に異なります。私が見つけたことはすべて、これがうまくいくはずだと言っていることを除いて、JavaのClassPath変数を編集する必要がある場所を誤解している必要があると確信しています。それで、取引は何ですか? LeiningenはClojureの独自の奇妙な反逆インスタンスを生み出しますか?完全に無関係な変数を編集していますか?どんな助けも感謝しています。

役に立ちましたか?

解決

$CLASSPATH 確かにここでは完全に無関係です。それは何ですか java-the-jvm-launcher-programmeは、コマンドラインでクラスパス情報が提供されていない場合に使用されます。 Leiningenは、JVMに、取り組んでいるプロジェクトに適したクラスパスを提供します。

この特定のケースでは、 "/home/.../ring-tutorial/src" リングチュートリアルのソースのみが含まれており、Clojure JAR(Clojureコードの実行に必要な)、リングジャー(リングはマルチモジュールプロジェクト)、またはMulti-Module Project)を含んでいないため、リングチュートリアルにとって非常に便利なクラスパスではありません。他の瓶のリングはいずれにも依存しています。 Leiningenが作成したClassPathはかなり長いように見えるかもしれませんが、そのコンポーネントはすべてそこにいる必要があります。

ちなみに、Clojureを始めたばかりの場合は、Toolchainのクラスパス管理施設に固執することをお勧めします(EMACS +を意味する可能性があります lein swank または、できる限りIDE + CLOJUREプラグイン)。それ以外の場合は、Clojure ClassPathの問題について多くの質問があります。さらに、Googleでグーグルできるトピックに関する他の多くのリソースがあります...しかし、そのツールサポートはかなり堅牢で、通常は通常はありません。 必要 ClassPathを手で触れると、最初は避けられたのが最も痛いだけです。

他のヒント

ClassPath変数を使用して依存関係を管理することの問題は、すべてのJavaおよび他のJVM言語が目的のためにそれを操作する必要があることです。あなたが隅に絵を描くのにそれほど時間はかかりません。

サーバーのみを起動するサーバーを起動すると、一種の動作があります。それは、10のプログラムとプロジェクトがすべて異なる依存関係を必要とするプログラムとプロジェクトを持っているJava開発者のPCで完全に分解され、その後、ソースコードを書くクラスパス変数を操作するためにバッシュスクリプトをデバッグする時間を増やしています。

したがって、クラスパスを管理するためのこの方法は、不使用になり、他のクラスロード技術を好むか、クラスパスを使用する場合、非常にローカルでのみ使用しています。

Clojure ClassPathはJava ClassPathです。

$CLASSPATH ときに無視されます java 実行可能ファイルはで呼び出されます -cp Leiningen(および他のほとんどのClojureビルドスクリプト)が行う議論。

Leiningenなどのビルドツールを使用している場合は、ClassPathを管理するために使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top