Я написал небольшое внутреннее веб-приложение, которое я использую для импорта счетов из нашей базы данных вакансий в MYOB.Я написал его с использованием Clojure и Compojure, и он на самом деле работает довольно хорошо, и это было также хорошим обучающим упражнением для меня.
Однако у меня возникла проблема, кажется, что после успешного выставления счетаИмпортировать Jetty сервер больше не будет обслуживать статический файл CSS.
Значение по умолчанию выглядит следующим образом:
(defroutes static-routes
(GET ["/:filename" :filename #".*"] [filename]
(response/file-response filename {:root "public"})))
(Файл просто css / default.css, он прекрасно работает до того, какпервый импорт.)
Теперь я думаю, что я нашел проблему, кажется, что драйвер MYOB ODBC меняет рабочий каталог сервера Jetty (и мой REPL), потому что, когда я ввожу следующее вREPL:
(file-seq (File. "."))
Я получаю список моих папок с временными файлами, который объясняет, почему мой CSS-файл больше не обнаруживается.
Странно, если я это сделаю:
(.getAbsolutePath (File. "."))
Я получил правильный каталог моего приложения.
Кто-нибудь знает что-то (кроме кодирования по абсолютному пути), которое может обойти эту причуду драйвера MYOB ODBC?
Я предполагаю, что я мог бы просто захватить и сохранить абсолютный путь при запуске, но будет ли это работать с Uberjar?
Редактировать: Кажется, что это невозможно исправить из-за ограничений в JVM?
Как изменить каталог в командной строке с Clojure?