2017-01-29 12 views
0

настоящее время я использую Leiningen и кольцо через командную строку на проекте Делаю под названием reagent_test, и я столкнулся с проблемой:FileNotFoundException с Leiningen и кольцо

C:/...reagent_test>lein ring server 
... huge chunk of errors 
Caused by: java.io.FileNotFoundException: Could not locate reagent_test/core__init.class or reagent_test/core.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name. 
... more errors 

Если кто-то хочет суть для этого я приготовлю, если нужно.

Проблема в том, что все файлы находятся в нужном месте. Вот мой project.clj:

(defproject reagent-test "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :plugins [[lein-cljsbuild "1.1.5"] 
      [lein-ring "0.10.0"]] 
    :dependencies [[org.clojure/clojure "1.8.0"] 
       [org.clojure/clojurescript "1.9.456"] 
       [ring "1.4.0"] 
       [leiningen "2.7.1"] 
       [reagent "0.6.0"] 
       [garden "1.3.2"]] 
    :cljsbuild {:builds {:app {:source-paths ["src/cljs"]} 
          :compiler {:output-to "resources/public/main.js" 
             :pretty-print true}}} 
    :ring {:handler reagent-test.core/-main}) 

И моя структура проекта, как это (по крайней мере, для соответствующих файлов):

src: 
    clj: 
    reagent_test: 
     core.clj 
    cljs: 
    reagent_test: 
     core.cljs 
project.clj 

В обоих core.clj и core.cljs у меня есть это как мое пространство имен:

(ns reagent-test.core) 

ПРИМЕЧАНИЕ. Папки имеют двоеточие, а файлы - нет.

ответ

0

В декларации пространства имен в верхней части файла, который вы должны использовать тир:

(ns reagent-test.core) 

В то время как файл (и все каталоги, над файлом) следует использовать подчеркивание. Таким образом, имя файла должно быть whatever/reagent_test/core.clj или whatever/reagent_test/core.cljs.

+0

Это то, что я сделал в обоих «core.clj» и «core.cljs» - извините, я должен был включить это. Должен ли я редактировать сообщение с фрагментом пространства имен? Кроме того, посмотрите на структуру файла - бит 'reagent_test' использует символы подчеркивания вместо тире. –

+0

Другое дело, что скобки ваших зависимостей не выстраиваются в линию: '[[org.clojure/clojure" 1.8.0 "]]' - кажется, что конечная скобка идет слишком рано. –

+0

Ах, приятно поймать! Благодаря! Это связано с тем, что Visual Studio Code ужасен, исправится в вопросе. –

0

Как отметил Крис Мерфи в комментариях к его ответу. Так как вы изменили структуру каталогов проекта немного, вам нужно будет изменить файл project.clj:

(defproject reagent-test "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :plugins [[lein-cljsbuild "1.1.5"] 
      [lein-ring "0.10.0"]] 
    :source-paths ["src/clj"] 
    :dependencies [[org.clojure/clojure "1.8.0"] 
       [org.clojure/clojurescript "1.9.456"] 
       [ring "1.4.0"] 
       [leiningen "2.7.1"] 
       [reagent "0.6.0"] 
       [garden "1.3.2"]] 
    :cljsbuild {:builds {:app {:source-paths ["src/cljs"]} 
          :compiler {:output-to "resources/public/main.js" 
             :pretty-print true}}} 
    :ring {:handler reagent-test.core/-main}) 

Добавки является :source-paths ключом, который должен указать каталог для кода Clojure. По умолчанию lein использует каталог src в качестве корня для исходных файлов Clojure.

 Смежные вопросы

  • Нет связанных вопросов^_^