1

3日間の欲求不満の後、私は助けを求めなければなりません. clojure を初めて使用するので、clojure.org の AOT ページから (compile 'examples.hello) を使用して REPL からこのスクリプトをコンパイルしたいと思います。

(ns examples.hello
    (:gen-class))

(defn -main
  [greetee]
  (println (str "Hello " greetee "!")))

私は、エディターとして、また深刻なプロジェクト leiningen のために、clojure コンソール プラグインを備えた JEdit を使用しています。

$HOME のディレクトリ構造は次のとおりです: clojure-1.3.0 (スペースを節約するために編集)

|-- classes
|-- clojure-1.3.0.jar
|-- clojure-1.3.0-slim.jar
|-- src
|   |-- examples
|   |   |-- hello.clj
|   |   `-- hello.clj~
|   |-- jvm
|

エラーメッセージは次のとおりです。

FileNotFoundException Could not locate examples/hello__init.class or examples/hello.clj on classpath:   clojure.lang.RT.load (RT.java:430)

いくつかの質問:

a) コンパイルしている場合、作成しようとしているまさにそのクラス ファイルをコンパイル関数が探す必要があるのはなぜですか?

b) コンパイル機能を機能させるための「正しい」手順は何ですか? c)この問題に関する私のインターネット検索では、「クラスパス」または「あなたのクラスパス」への言及がたくさんあります。クラスパスが clojure.jar などと作業中のスクリプトを参照し、Java 1.5 以降不要であると思われる Java $CLASSPATH を参照していないと仮定するのは正しいですか?

4

1 に答える 1

0

ぎこちない回答で申し訳ありませんが、Clojure ビルドや他の言語についてはまだ理解できていません。だから、我慢してください。lein のようなビルド ツールを使用しているという観点から、この回答を書いています。

メイン -- 私の場合は addr-verify -- は、プロジェクトに付随する project.clj で指定された名前空間にある必要があります。したがって、私のメイン モジュールは core.clj であり、その名前空間を addr-verify として宣言し、適切な用語がないため、gen-class を宣言または使用します。

私の project.clj は、main が addr-verify であることを示しています。

Clojure アプリケーションを構築するための lein の優れた点の 1 つは、たとえばlein create my-test-proj.

これが私の ./addr-verify/project.clj からの適切な行です

(defproject addr-verify "1.0.0-SNAPSHOT"
  :description "TODO: add summary of your project"
  :dependencies [[org.clojure/clojure "1.2.1"]
                 [clojure-csv/clojure-csv "1.2.4"]
                 [org.clojure/tools.cli "0.1.0"]
                 [clj-http "0.1.3"]]
   :aot [addr-verify]
   :main addr-verify)

./addr-verify/src/addr_verify/core.clj の最初の数行を次に示します。

(ns addr-verify
  (:gen-class)
  (:require [clojure.string :as cstr])
  (:require [clojure.contrib.str-utils :as ustr])
  (:require [clj-http.client :as client])
  (:use clojure-csv.core)
  (:use [clojure.tools.cli])
  (:import java.util.Date)
  (:import java.lang.Thread)
  (:import java.io.File)
于 2012-04-21T14:07:43.717 に答える