TLDR;lein repl rozpoczyna się w niewłaściwym obszarze nazw
lein repl
rozpoczyna się w przestrzeni nazw określonej przez :main
w project.clj
, zamiast user
, zależnie od potrzeb.
Szczegóły
Mam Leiningen projekt, który jest wdrożony jako aplikacja wiersza poleceń w uberjar, więc mogę go uruchomić tak:
java -jar my-app-1.0-standalone.jar --some --args
Mam też dev/user.clj
do daj mi ładne środowisko REPL, jako described here.
My project.clj
wygląda następująco:
(defproject my-app "1.0"
:main my-app.cli
:aot [my-app.cli]
:profiles {:dev {:source-paths ["src" "dev"]}})
Kiedy zacznę rEPL, albo z lein repl
z linii poleceń lub M-x cider-jack-in
z Emacs, jestem w przestrzeni nazw my-app.cli
, zamiast user
.
Jeśli usunąć :main my-app.cli
z project.clj
, mój REPL rozpoczyna się w user
nazw jak będę oczekiwać, ale wyraźnie to łamie mi uberjar.
Wszelkie pomysły?
Działa doskonale! Dziękuję Ci. –
Czy to nadal działa? Właśnie wypróbowałem to w Leiningen 2.7.1 pod Clojure 1.9.0-beta2 i dostaję ten błąd: 'Nie mogłem zlokalizować user__init.class lub user.clj na ścieżce clas. Zaczyna się w przestrzeni nazw 'user', ale przed jej przejściem jest duży ślad stosu. –