問題タブ [clojure-java-interop]
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.
macros - Javaオブジェクトでマップを返すclojureマクロの問題
私はマクロを初めて使用するので、Java オブジェクトが Clojure コードで表現される方法に関係していると思われる基本的な質問があります。マップを返すマクロがあります。
ただし、マップでJavaオブジェクトを使用すると、事態が奇妙になります
出力に変更defmacro
するとdefn
、次のようになります。
だから私は、表現が読者をうんざりさせていると推測しています。これを行う正しい方法はありますか?
maven - clojure maven plugin: mvn clojure:test を使用すると clojure テストが成功するが、mvn install を使用するとテスト段階では成功しない
clojure maven プラグインを使用してプロジェクトをビルドしています。プロジェクトには、次のような内容のテスト、たとえばmytest.cljが含まれています。
mvn clojure:testを実行する と、ビルドが正常に実行されます。
しかし、mvn installを実行する と、テスト フェーズに到達すると、mytest.cljで宣言されたサーバーが起動します。その開始後、何も起こりません: clojure テスト スクリプトがフリーズしているようで、プロジェクトのビルドを続行できません (エラー メッセージなし): Maven がハングするだけです。ただし、既に述べたように、 mvn clojure:testは同じプロジェクトに対して正常に実行されます。
誰かがこの問題を解決する方法を知っていますか?
どんな助けでも大歓迎です。よろしくお願いします
ホレス
PS: 標準のmvn installを使用して clojure ソースをコンパイルおよびテストできます。これは、プロジェクトのパッケージがpom.xmlで「clojure」パッケージとして構成されているためです。その結果、clojure Maven プラグインは、コンパイル、テスト、およびテストコンパイルの Maven フェーズに自動的にバインドされます。
xml-parsing - Clojure Leining REPL OutOfMemoryError Java ヒープ領域
かなり小さい (< 100MB) xml ファイルを次のように解析しようとしています。
エラーが発生しています:
ここに私のproject.cljがあります:
.bash_profile で LEIN_JVM_OPTS と JVM_OPTS を設定しようとしましたが、成功しませんでした。
次のproject.cljを試したとき:
次のエラーが表示されます。
leiningen replのヒープサイズを増やす方法はありますか?
ありがとう。
clojure - ダウンローダ、Clojure.java.io、または Java の io API を作成するには?
Clojure で一般的な http/ftp ファイル ダウンローダーを作成しようとしています。少し調査したところ、Java の API (BufferedReader BufferedInputStream など) または Clojure.java.io の API (ライター、リーダー、入力ストリーム、出力ストリーム) のいずれかを使用できることがわかりました。
Clojure の API は Java の API よりも使いやすく読みやすいと思いましたが、パフォーマンスや速度などの点では、Java の API の方が優れているのでしょうか?
どちらかを選択する他の理由はありますか?
jvm プラットフォーム言語として、Clojure はパフォーマンスの観点から、ファイル ダウンローダ プロジェクトに適していますか? 調査を行っている間、jvm プラットフォームでの速度とメモリ パフォーマンスについて議論しているいくつかの投稿も読みました。言語の選択が自分のプロジェクトに適しているかどうかを知りたいと思います..
interface - definterface と defprotocol の混合
算術式を表すインターフェースを実装しようとしています。インターフェイスは Java 側で使用されますが、ロジック全体は clojure にあります。
持つ:
私はそれを次のように使用しようとします:
しかし、私は得ています:
clojure が Expression3 の ExtendsExpression の toTree を呼び出そうとするのはなぜですか? Expression3 では、Expression インターフェイスの toTree メソッドが呼び出されることを期待しています。
clojure - Clojure アノテーションと整数
JaxRs アノテーション付きサービスに Swagger アノテーションを追加しています。
私は次のものを持っています:
生成されたクラスを逆コンパイルすると、注釈は次のようになります。
最初の注釈コード = 200L であることに注意してください
実行時には、この値は int でなければならず、これを実現する方法がわかりません
私が試したら
コンパイル エラーが発生します (maven swagger プラグインを使用)
私が試してみました
このコンパイルエラーが発生します:
私は他の多くのもの(derefなど)を試しましたが、秘密のソースを見つけることができません.
私はclojureにかなり慣れていないので、これに関する助けを切望しています。
前もって感謝します
マーティン
java - Clojure/QuantLib 相互運用性: クラスローディングの問題
問題文:
次のように、Clojure 名前空間から QuantLib Java 関数を呼び出したいと考えています。
これまでのところ、次のことを行いました。
生成された SWIG インターフェイスをダウンロードしました。
新しいライニンゲン プロジェクトを作成しました。
上記のインターフェースを src/main/java/org/quantlib/ にコピーしました
追加した:
私にproject.clj
。
クラス BKLoader を追加して、非常によく似たクラスローディングの問題を解決するための Bojan Nikolic の指示に従いました。
ファイルを REPLにロードするとcore.clj
、次のエラーが発生します。
Bojan Nikolic は、これらのクラスローディングの問題を処理するための推奨事項を持っています。そのリンクに従って、新しい静的クラスを追加してBKLoader
QuantLibJNI をロードし、それを他の Java クラスと共にロードcore.clj
し、REPL へのロードを再度試みました。
その時点で、B. Nikolic のクラスを my の ns 宣言からcore.clj
取り出して、classlojureを調べます。
の Apage43 の提案に従って#clojure
、この時点で以下を my にドロップしますcore.clj
。
BKLoader
クラスを呼び出すときと同じエラーが発生します。
皆さんがもたらすことができる洞察に感謝します。ありがとう!
解決
解決策は、QuantLib jar を:java-source-paths
inに追加することproject.clj
です。
clojure - Clojure 文字列を Java 静的メンバーに解決する
過去に私はできました、例えば
しかし、Java 静的メンバーに対しては同じようには機能しないようです。たとえばenum
、独自のファイルに次のようなものがあります。
私のClojureコード(neo4jを使用)では、次のことを行います。
しかし、(resolve (symbol (str "RelTypes/" (.toUpperCase (name reltype-as-keyword)))))
nil を返します。
アップデート:
使用できる別のライブラリからわかります(つまり、他の場所で定義された列挙型を使用せず、その場で s を作成します)。reify
RelationshipType
例えば
しかし、Clojure コードの外部で Java ファイルに定義された列挙型を使用して、どのようにそれを行うのでしょうか?