10

さまざまな入門例を試していますが、ルート内の基本的なHTMLで動作する基本的なhelloworldの例を取得できます。

(ns hello-world
  (:use compojure.core ring.adapter.jetty)
  (:require [compojure.route :as route]))

(defroutes example
  (GET "/" [] "<h1>Hello World Wide Web!</h1>"))

(run-jetty example {:port 8080})

しかし、私がそのようなhtmlヘルパーを使おうとすると

(ns hello-world
  (:use compojure ring.adapter.jetty)
  (:require [compojure.route :as route]))

(defroutes example
  (GET "/" []
    (html [:h1 "Hello World"])))

(run-jetty example {:port 8080})

次に、次のエラーが発生します

[null]スレッド"main"の例外java.io.FileNotFoundException:クラスパスでcompojure__init.classまたはcompojure.cljを見つけることができませんでした:(core.clj:1)

4

2 に答える 2

9

W55tKQbuRu28Q4xvがコメントで言及しているよう(:use compojure ...)に、2番目の例で使用します。に切り替えてから(:use compojure.core ...)、使用する他の機能のいくつかの追加の依存関係をプルする必要があります(hiccupたとえば、HTML構築DSL用の別のプロジェクトである(<-これはGitHubリポジトリへのリンクです))。

私の推測では、Compojure 0.4を使用しながら、Compojure0.3用に作成されたいくつかのチュートリアルに従おうとしていると思います。後者にはcompojure名前空間がまったく含まれておらず、大幅にスリム化されており、基本HTTP処理が委任されring、他のさまざまな機能が個別のプロジェクトにスピンオフされています(前述のようにhiccup)。

幸いなことに、0.3-> 0.4の移行に関する優れたリソースがあります。たとえば、 BrentonAshworthによるこのブログエントリです。Compojureから削除されたものが適切に見つからない場合は、そこから今どこでそれを見つけることができるかを知ることができる可能性があります。正誤表と追加の詳細については、CompojureのGoogleグループに関するこのフォローアップディスカッションも参照してください。

于 2010-05-26T06:22:36.933 に答える
1

私はCompojureの「HelloWorld」で遊んで、この問題を抱えていました(そして、私の脳に混乱している他の多くの問題も同様です)。もう1つの厄介な問題は、Web上の多くのCompojureドキュメントがすでに古くなっていることです。結論として、これらはあなたがたどりたいステップです:

  1. Leiningenの最新バージョンを入手してください。githubサイトのインストール手順に必ず従ってください。( MacPortsを通過しないでください。彼らのLeiningenは古くなっています。)

  2. ここでCompojureの指示に従ってください。

ファイル名が間違っていることに注意してください。src / hello-www/core.cljではなくsrc/hello_www/core.cljである必要があります。

于 2010-05-26T18:00:04.780 に答える