2014-03-24 2 views
1

В любое время я вспылить свежий REPL Я всегда получаю то же сообщение, а именноПроблемы при открытии Repl

#<FileNotFoundException java.io.FileNotFoundException: Could not locate test_app/core_init.class or test_app/core.cljon classpath:> 

Пространство имен Я использую это ns test-app.core

РЕПЛ все еще продолжает идти вверх и я могу выполнить код с ним. Я просто не уверен, что это приведет к будущим проблемам, таким как попытка работать с помощью иннертера или других библиотек.

ответ

3

Имеет ли ваша project.clj следующую строку за каждый шанс?

... 
:main test-app.core 
... 

Leiningen попытается перейти в это пространство имен, прежде чем показывать REPL. Если он не может найти его, вы увидите упомянутую вами ошибку. Теперь, причина не может найти это другая тема для изучения, поэтому сначала убедитесь, что это, как ваша структура каталогов выглядит следующим образом:

. 
|-- project.clj 
|-- src 
    |-- test_app 
     |-- core.clj 

Если это произойдет, я думаю, пришло время, чтобы получить возможность отправлять Leiningen и Java версии (и в идеале ваш project.clj), чтобы позволить SO попытаться справиться с этим чудесным REPL. :)

Edit: Решение этой проблемы было бы - если какой-либо из указанных выше предложений по Вашему делу - конечно, будет либо удалить :main строку из файла проекта или настроить структуру каталогов.

+0

Я сначала удалил ': main', и он позаботился об ошибке выше, но затем приведет к новой проблеме в REPL. А именно, REPL сказал 'user =>' и не попал в мое пространство имен. На этом этапе я снова вернул строку ': main' в проект, чтобы я мог получить доступ к моим встроенным функциям в пространстве имен. @xsc – sunspots

1

В вашей структуре проекта должен быть файл core.clj в папке с именем test_app.

В принципе, имя файла должно применяться для обозначения того, что вы заявили в своей форме ns.

Как Clojure Documentation FAQ говорит,

Для того, чтобы использовать класс Java или Clojure пространство имен в вашей программе, , что класс или пространство имен должно быть «на пути к классам», то есть, внутри директории или JAR-файл, указанный в пути к классам.

+0

Нужно ли что-либо внутри 'core.clj'? У меня был такой файл в папке с именем 'test_app', но он просто был сохранен поверх него только с пространством имен сверху в первой строке. Мой путь идет от 'test-app' до' src' до 'test_app'. – sunspots

+0

Оператор 'ns test-app.core' должен находиться внутри файла' test-app/src/test_app/core.clj' – albusshin

+0

Так обстоит дело, однако ошибка по-прежнему сохраняется. – sunspots