質問

だから私は現在このコードを持っています: ジェネラコディセタグプレ

EmacsでC-c C-kを実行すると、次の出力が得られます: ジェネラコディセタグプレ

しかし、lein uberjarを実行して結果のjarファイルを実行すると、エラーが発生します: ジェネラコディセタグプレ

2つの質問があります:

  1. uberjarがREPLとまったく同じように機能しないのはなぜですか?
  2. この問題を解決するにはどうすればよいですか?
役に立ちましたか?

解決

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。修正

解決策は、最初に名前空間に明示的に切り替えることです。: ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top