Не мог определить местоположение compojure в пути к классу

Я пробую различные Начинающие примеры, и я могу получить основное привет мировой пример, работающий с основным HTML в маршруте как таковом

(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})

Затем я получаю следующую ошибку

[пустое] Исключение в потоке "основной" java.io. FileNotFoundException: не Мог определить местоположение compojure __ init.class или compojure.clj на пути к классу: (ядро clj:1)

10
задан Xian 1 June 2010 в 21:34
поделиться

2 ответа

Как W55tKQbuRu28Q4xv упоминает в комментарии, вы используете (: use compojure ...) во втором примере. Вам следует переключиться на (: use compojure.core ...) , а затем, возможно, добавить некоторые дополнительные зависимости для других функций, которые вы используете (например, hiccup (<- это ссылка на репозиторий GitHub), который теперь является отдельным проектом для DSL, создающего HTML).

Я предполагаю, что вы пытаетесь следовать некоторым руководствам, написанным для Compojure 0.3, при использовании Compojure 0.4. Последний вообще не включает пространство имен compojure и был значительно сокращен, при этом базовая обработка HTTP делегирована кольцу , а различные другие функциональные возможности выделены в отдельные проекты ( как вышеупомянутый икота ).

К счастью, есть хорошие ресурсы по переходу 0,3 -> 0,4, например эта запись в блоге Брентона Эшворта. Если вы не можете найти что-то, что было удалено непосредственно из Compojure, скорее всего, вы сможете узнать, где это найти сейчас, из этого.См. Также это последующее обсуждение в группе Google Compojure для исправлений и дополнительных деталей.

9
ответ дан 4 December 2019 в 01:29
поделиться

Я играл с Compojure "Hello World" и столкнулся с этой проблемой (как и со многими другими, которые запутываются в моем мозгу). Еще одна сложность заключается в том, что большая часть документации Compojure в Интернете уже устарела. В итоге, это шаг, которому вы хотите следовать:

  1. Установите последнюю версию Leiningen . Убедитесь, что вы следуете инструкциям по установке на сайте github. (Не используйте macports; их Leiningen устарел.)

  2. Следуйте инструкциям Compojure здесь .

Обратите внимание на неправильное имя файла. Это должно быть src / hello_www / core.clj НЕ src / hello-www / core.clj.

1
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: