2014-10-14 6 views
4

Как получить корневой каталог проекта leiningen во время выполнения?Получить корневой каталог проекта leiningen

Моя проблема заключается в том, что я хочу разместить свой файл sqlite в корневом каталоге и получить доступ к нему через исходный код в другом исходном файле.

Мне не нравится использовать относительный путь, так как я должен делать?

+0

Когда вы говорите, «SQLite file ", является ли файл данных или файл, содержащий исходный код? Если это файл данных, мой опыт в том, что большинство функций записи файлов и чтения файлов будут использовать корневой каталог проекта Leiningen по умолчанию. Если это не работает, я бы посмотрел документацию о функциях, которые вы используете для доступа к файлу. (Если вы вызываете функции Java из Clojure, то где функции Java ожидают найти файлы?) Если вы пытаетесь сохранить файл исходного кода Clojure в корне Leiningen, одним из вариантов будет использование файла load ', хотя это не считается хорошей идеей. – Mars

+0

Я имею в виду файл данных, и функция, которую я использую, не работает на leiningen project root dir.If это работает, это еще один вопрос, как функция может знать, где находится корневой каталог? – user2925565

ответ

6

Вот два способа, чтобы получить полный путь к текущему рабочему каталогу, который будет домашний каталог проекта при запуске Clojure с помощью lein repl или lein run:

(System/getProperty "user.dir") 

и

(.getCanonicalPath (clojure.java.io/file ".")) 

Во втором методе вы можете вставить любую строку пути вместо «.», И она будет интерпретирована относительно текущего рабочего каталога Clojure, если строка не содержит начальную обратную косую черту. (Я не уверен, является ли поведение точно так же в системе Windows.)

(Первый метод исходит из this question, ответы там могут быть полезны для вашей ситуации.)

+0

Он работает очень хорошо, спасибо большое! – user2925565

0

Можете ли вы поместить файл sqlite в папку ресурсов, а затем вы можете использовать clojure.java.io/resource, чтобы получить его во время выполнения?

+0

Звучит как хорошая идея, и она в определенной степени решает мою проблему. Однако я даже хочу знать, существует ли способ получить абсолютный путь корневого каталога. – user2925565

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