問題タブ [boot-clj]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - boot-clj watch ビルド -> jar を実行 - OK -> コードを変更 -> jar を実行 - 失敗: クラスが見つかりませんでした
コマンドでjarをビルドすると、コマンドboot build watch
で正常に実行できjava -jar target/project.jar
ます。ソース コードを変更して再構築した後、実行が失敗し、メッセージが表示される
Caused by: java.io.FileNotFoundException: Could not locate my_dir/foo__init.class or my_dir/foo.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.
次のファイル構造があります
build.bootコンテンツ:
foo.cljコンテンツ:
core.cljコンテンツ:
これで実行中です。たとえば、 core.cljboot build watch
の内容を に変更すると、再構築を待って、結果の project.jar を実行すると、上記のクラス エラーが見つかりませんでした。最後に、コマンドを使用してコードを手動で再構築し、再実行することで機能しますが、それをやりたいのですが、なぜそのように機能しないのかまったくわかりません。私は起動するのがまったく初めてなので、明らかなことを見逃しているかもしれませんが、それでも知りたいです。何か案は?(println "second run")
boot build
boot watch build
起動バージョン
unit-testing - boot-clj: gen-class で生成されたクラスの単体テストをビルド/起動する方法
私の clojure プロジェクトでは、gen-classコマンドを使用していくつかの Java クラスを作成しました。彼らは[extractor.yaml YAMLExtractor YAMLExtractorFactory]
です。これらのクラスに対して単体テストをビルドしたかったのですが、java.lang.ClassNotFoundException: extractor.yaml.YAMLExtractor
テストを実行するとエラーが発生しました。
エラーの原因となるファイル: yaml_extrator_factory.clj
エラーは、テスト中にのみ発生します。プロジェクト全体がエラーなしで AOT コンパイル可能であり、jar ファイルをビルドしても問題ありません。
テストsimple.cljには head が含まれています:
そして、どのクラスが CLASSPATH を出力するかをテストします。yaml-extractor-factory
使用されませんでした。テストは次のコマンドで実行されます:
boot aot -a update-classpath run-test -t extractor.simple
ここで、タスクupdate-classpathがクラスパスに追加(get-env :directories)
され、run-testがテストを実行します。run-test
通常の clojure コードで問題なく動作します。
run-testは、次の内容の私のタスクです。
clojure - Clojure/boot の簡単なワークフロー設定を求めている
(a) すべてのソース ファイルが現在のディレクトリにある、(b) ソース ファイルが変更されるたびに単体テストが実行される、(c) 定義を含むソース ファイルが変更されたときに REPL が定義を更新するように、ブートをどのようにセットアップしますか?
具体的には:
何が入り
build.boot
ますか?REPL を開始するためのシェル コマンドは何ですか? また、REPL のどのコマンドが単体テストの監視を開始しますか?
他にどのような従来のセットアップを行う必要がありますか?
boot、boot-test、boot-quick-test、 boot でのREPL リロード、およびboot-refreshに関する多くのドキュメントを読みましたが、あまり機能していません。私がこれまでに見つけたドキュメントは、ちょっとした情報やヒントを提供しているように見えますが、これらをまとめるために必要なものはありません.
適切な (およびその他のもの) の簡単な例build.boot
が特に役立ちます。
これまでのところ、これは私が持っている(一種の)作品です。
さらに、現在のディレクトリ内の 1 つのファイルsample.clj
:
これにより、起動して現在のディレクトリ内のソース ファイルが検索され、REPLsample.clj
を入力して手動で変更を再読み込みできるようになります。ファイルで単体テストを手動で実行していましたが、今試してみると、「間違った数の引数 (0) が渡されました: core/test」というエラーで失敗しました。(refresh)
(boot (test))
.clj
これを行う正しい方法は何ですか?