Clojureシンボル評価エラー
-
28-10-2019 - |
質問
だから私は現在このコードを持っています: ジェネラコディセタグプレ
EmacsでC-c C-k
を実行すると、次の出力が得られます:
ジェネラコディセタグプレ
しかし、lein uberjar
を実行して結果のjarファイルを実行すると、エラーが発生します:
ジェネラコディセタグプレ
2つの質問があります:
- uberjarがREPLとまったく同じように機能しないのはなぜですか?
- この問題を解決するにはどうすればよいですか?
解決
1。 uberjarの機能がREPLと異なるのはなぜですか?
エラー「NO_SOURCE_PATH」の原因は、現在、 'fooを定義した名前空間にいないことです。
説明:REPLでコードを評価して実行すると、contact-form.core
はREPLによって評価されるため、期待どおりに(ns contact-form.core)
名前空間に配置されますが、user
名前空間に切り替えて、-main
を呼び出すと可能です。同じエラーが発生します:
ジェネラコディセタグプレ
したがって、スタンドアロンuberjar実行(REPL外)用のmain
へのエントリポイントを指定することは、(contact-form.core/-main)
が評価されていないため、jar内のデフォルトの名前空間であるclojure.core
から(ns contact-form.core
を呼び出すことと同じです。結果:main
は、関数への完全修飾(名前空間)パスを使用して実行できますが、contact-form.core
のシンボルは現在のデフォルトの名前空間では使用できません。
2。修正
解決策は、最初に名前空間に明示的に切り替えることです。: ジェネラコディセタグプレ
所属していません StackOverflow