問題タブ [leiningen]
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 - 正しいファイルシステム パスを特定する方法
public/static
いくつかの外部リソースをダウンロードし、Ringのディレクトリからアクセスできるようにする必要があるアプリケーションに取り組んでいます。
しかし..アプリケーションの静的ディレクトリにリソースを保存する際に問題がありring-jetty-adapter
ます。テスト サーバーと運用サーバーは Tomcat を実行しています。
:web-content "public"
leiningen プロジェクトに追加し、プロジェクトpublic
のルートにディレクトリを追加すると、http-agent とダック ストリームを使用したダウンロード機能があります。
REPL から Jetty を起動して を使用するsavepath: "public/my.file"
と、ダウンロードしたファイルがディレクトリに正しく配置されますpublic
。しかし、.war
ファイルを使用して Tomcatにデプロイするとpublic
、アプリケーション コンテキスト パスの下ではなく、Tomcat ルート ディレクトリ内のディレクトリが検索されます。
HttpServlet
ミドルウェア ラッパーを追加してコンテキスト パスを特定し、そこから正しい保存パスを作成しようとしましたが、にアクセスする方法や、アプリケーションがアダプターで実行されているかどうか、またはアプリケーションが下にデプロイされているかどうかを判断する方法が見つかりません。特定のコンテキスト。
ここでラッパー:
両方:servlet
とも:req
ですnil
。
emacs - Emacs内からleiningen replのロードを自動化するには?
Leiningen のスワンクと統合されたEmacs を使用しています。.clj ファイルの操作を開始する必要があるたびに、次のことを行う必要があります。
emacs pack/my-ns.clj
コンソールから実行します。- タイプし
M-x lein-swank
ます。 - バッファをコンパイルします。
- Clojure REPL では、名前空間を変更します。つまり、 type
(in-ns 'pack.my-ns)
.
このプロセスを自動化して、コンソールなどから実行しemacs-clj pack/my-ns.clj
、環境を使用できるようにするにはどうすればよいですか?
clojure - lein uberjar で生成された Jar が NoClassDefFoundError で失敗する
この project.clj を使用した単純な Web アプリがあります。
私のメインは次のようになります。
REPL を使用すると問題なく動作します。ただし、jarを生成しlein uberjar
て実行しようとすると、次のようになります。
それはこの例外で死にます:
私は何を間違っていますか?それを機能させる方法は?
それが問題かどうかはわかりませんが、jar 内のファイル、clojure 自体、および Java ライブラリは .class ファイルとして展開されますが、すべての clojure ライブラリはプレーンな .clj ファイルとしてのみ存在することに気付きました。
clojure - leiningenを使用したコマンドライン引数
私は最近clojureから始めました、そして私は小さなプロジェクトを作成するためにleiningenを使用しています。leiningenをコマンドライン引数で動作させるのに問題があります。以下は私のsrc/project/core.clj
と私project.clj
を実行するlein run arg1 arg2
と、次のエラーが発生します。
ただし、を実行してから実行するlein uberjar
とjava -jar project-1.0.0-SNAPSHOT-standalone.jar arg1 arg2
、正しい出力が得られます。
開発中に毎回実行するためにuberjarを作成する必要があるのはあまり快適ではありませんが、より良い方法はありますか?
java - Clojure で保護されたメソッドを拡張する方法
これを Clojure でどのように記述しますか?
vaadin srvlet
クラスをclojureで書こうとしています:
clojure - leiningen の既定のリポジトリとは何ですか?
Leiningen (https://github.com/technomancy/leiningen) は、project.clj で指定された依存関係を満たすために、いくつかの既定のリポジトリを調べます。
これらのリポジトリを参照して、leiningen ですぐに使用できるものを確認したいと考えています。これらのリポジトリとは何ですか。また、特定のバージョンの leiningen についてはどこで検索できますか。
clojure - ビルドプラットフォームに基づいて異なる依存関係を必要とするleiningenプロジェクトをセットアップするためのエレガントな方法は何ですか?
マルチプラットフォームのGUI開発を行うために、GTK + Clojure(GTKのJavaバインディングがWindowsに移植されていないように見えるため)からSWT+Clojureに切り替えました。これまでのところ、Linux用に構築されたuberjarを入手したという点で非常に優れています。
ただし、問題は、Windows用のuberjarを作成したいということであり、project.cljファイルを管理するためのクリーンな方法を見つけようとしています。
最初は、SWTライブラリを指すようにクラスパスを設定してから、uberjarをビルドすることを考えました。これには、jarを実行する前にSWTライブラリへのクラスパスを設定する必要がありますが、とにかく、ランチャースクリプトが必要になる可能性があります。ただし、leiningenは常に次のことを報告するため、このインスタンスではクラスパスを無視しているようです。
現在、project.cljは次のようになっています。
関連する行はそのorg.eclipse/swt-gtk-linux-x86
行です。Windows用のuberjarを作成したい場合は、に依存する必要がorg.eclipse/swt-win32-win32-x86
あり、別のuberjarをに依存する必要がx86-64
あります。
私の現在の解決策は、ビルド環境ごとに異なるブランチを作成することproject.clj
です。これは、セミを使用して1ガロンのミルクを提供するようなものですが、バージョン管理にバザールを使用しているため、分岐と繰り返しの統合が簡単です。project.linux.clj
、、などを使用するのがより良い方法かもしれproject.win32.clj
ませんが、どのプロジェクト記述子を使用するかをleiningenに指示する方法がわかりません。
そのような環境を設定する他の(できればよりエレガントな)方法は何ですか?
unit-testing - UnicodeClojureユニットテスト出力
ASCIIシーケンスをUnicode文字に変換するコードを単体テストすると、Clojureテストの出力に問題があることがわかりました。
私の端末がUnicode文字を出力できることをテストしました(テストファイルをカタログ化することにより)。これは正常に機能するため、問題はleiningen、Clojure、またはclojure.testに何らかの形で関連しているようです。
テストの例を次に示します(ユニコードのギリシャ語セクションを使用します。ギリシャ語拡張も使用しますが、同じ問題が当てはまると思います)。
入力にスペースがないために失敗することを意味します。からの出力lein test
は次のとおりです。
私はここで何が間違っているのですか?これはターミナルエミュレーションの問題ですか、それともclojureに関連する問題ですか?Slime / swank/emacsを使用してREPLでコードを実行するときに同じ問題が発生します。emacsのREPLは、Unicode出力の疑問符のみを出力します(ただし、emacsはUnicodeをかなり理解できます)。
ターミナルとiTerm(OS X)でこれを実行してみましたが、同じ結果になりました。
clojure - Clojure でプロジェクトをインストールし、クラスパスに配置する
criteriumをインストールしたばかりで、repl や他のプロジェクトから使用できるようにしたいと考えています。インストールしたライブラリをどこからでも使用できるように、Java クラスパスを拡張するにはどうすればよいですか?
今後取り組むすべてのプロジェクトで簡単に機能する回答をいただければ幸いです。私は leiningen を使用しており、実行するとこれが行われると思いますがlein install
、何か間違っているか、それでは十分ではありません。
macos - ClojureREPLはOSXではdoseq出力の印刷でスタックしますが、Linuxではスタックしません
コマンドを使用して、Snow LeopardOSXマシンとUbuntuLinuxボックスの両方でClojure1.2を実行していますlein repl
。enliveチュートリアルhttps://github.com/swannodette/enlive-tutorial/を実行しています
「ThirdScrape」チュートリアルに到達して次のコマンドを実行すると、次のようになります。
Ubuntuでは期待どおりに動作しますが、OS Xでは、最初のストーリーのみを出力し、数値、(println "hello world")などの式を入力した後にのみ、残りのストーリーを出力します。バッファが出力を完全にフラッシュしていないかのように、REPLがOSXで動作している方法について何か奇妙なようです。
doseq
関数でマクロが使用されていることに気付きましたprint-stories
。だから私がこれを行うと:
私はOSXでこの出力を取得します:
これは最初のアイテムにすぎません。次に0
(または任意の有効な式)を入力してReturnキーを押すと、残りの出力が得られます。
また、この動作に一貫性がないことにも気づきました。時々、何も出力されないので、タイプする0
か何かでそれをフラッシュして入力することができます。場合によっては、すべての出力が適切にフラッシュされます。
誰かアイデアはありますか?