問題タブ [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.
clojure - Clojure が JPanel に境界線を追加し、一般にオブジェクト内の Java メソッドにアクセスする
LISP から来て、私は Java オブジェクトにアクセスするときに最も困難な瞬間を経験しています。JPanel にタイトル付きボーダーを配置しようとしています。ここに私のコードと例外があります:
この種の状況に対処するためのルールはどこにありますか? いつものように、あなたの助けは高く評価されます.
皆さんの回答と説明に感謝します。関数の基本を投稿しているので、何を参照すればよいかがわかります。
そのように関数は問題なく動作しますが、私がやろうとしているのは、Panel_0 に TitledBorder を配置することです。あなたの指示に従って、さまざまな方法でコーディングを試みましたが、これまでのところ成功していません。
お世話になりました皆様に改めて感謝申し上げます。
更新:申し訳ありません。このすべての混乱で、私は別の定義を実行していました。はい、あなたとクガササンが言ったように機能します。私は最終的に次のようにコーディングしました:
そしてそれはうまくいきました!!! これに時間を割いていただき、ありがとうございます。
clojure - clojure gen-class varargs コンストラクター
:constructors マップとそれに続く -init 定義では、どうすれば varargs コンストラクターを表現できますか?
clojure - (int 10)がLongインスタンスを生成するのはなぜですか?
(int 10)
タイプのインスタンスを生成しないのはなぜjava.lang.Integer
ですか?
clojure - Clojure の LDAP ページング結果関数の実装が機能しないのはなぜですか?
TLDR; これはよくできた質問ではないので、気にしないでください。スタックオーバーフローで質問しない方法の良い例である以外に、何らかの償還機能があると人々が考えない限り、近い将来に削除します。
プロジェクトの 1 つで UnboundID LDAP SDK を使用しています。私は現在、ページ化された結果検索 (RFC2696 で説明されています) の実装に行き詰まっています。そのために、Java 実装が機能しています。Java コードをテストしましたが、テスト LDAP ディレクトリに対して正しく動作することがわかっています。Java 実装の主要部分は、次の do..while ループです。
リクエスト「コントロール」が検索リクエストに追加され、一致するエントリのサブセットを返送する必要があることをサーバーに示します。最初の要求が有効であると仮定すると、LDAP サーバーは pageSize エントリと、特別な「Cookie」を含む応答コントロールを返します。結果の次の「ページ」を取得するために、クライアントはリクエスト コントロールに Cookie を含めてリクエストを再送信し、サーバーは後続の応答に新しい Cookie を含めます。このサイクルは、返すエントリがなくなるまで続きます。この場合、Cookie はクライアントに返されず、検索要求は完了します。
上記のコードを Clojure に移植しようとしましたが、これまでのところ動作させることができませんでした。コードは次のとおりです。
Java コードは 18 のリクエストで 1720 のエントリを取得しますが、私のコードは 5 つのリクエストの後で「サイズ制限を超えました」LDAPSearchException で失敗します。
皆さんへの私の質問は、なぜ 2 つの実装の動作が異なるのですか? 同じCookieが2回使用されると例外がスローされるため、新しいリクエストごとに受信したCookieを送信していることを知っています。また、各ページで返されるエントリのセットが異なるため、結果の後続のページを取得していることもわかっていると思います。
私は困惑しており、トラフィックを分析するために Ettercap を引きずり出すという考えを楽しんでいません。確かに、私のコードには明らかに間違った何かがあり、それが異なる動作を引き起こしています。
clojure - JavaからClojure1.3を呼び出す
JavaコードからClojure関数を呼び出したいのですが。この質問は最近尋ねられておらず、既存の回答は私にはうまくいきません。(Clojure 1.3、leiningen 1.7.0)。私は次の最小限のプログラムを持っています:
プロジェクト.cljは次のようになります。
uberjarを生成し、この小さなJavaプログラムと同じディレクトリにコピーします。
このコマンドを使用してコンパイルします。
コンパイルは成功しますが、実行時にプログラムは失敗します(ClassNotFoundException)。foo(5)のようにfooを直接呼び出す2番目の形式は、コンパイルすらしません。また、:gen-classの「static」宣言の有無にかかわらず試してみました。
performance - 奇妙なaget最適化動作
agetパフォーマンスに関するこの質問のフォローアップ
最適化に関しては、非常に奇妙なことが起こっているようです。私たちは次のことが真実であることを知っていました。
しかし、さらに実験を重ねると、私は本当に奇妙になりました。
反射の警告やヒントは必要ありません。同じ動作は、agetをルートvarまたはletにバインドすることで見られます。
バインドされたagetが最適化する方法を「知っている」ように見える理由はありますか?コア関数はそうではありませんか?
clojure - 「lein run」で実行するとシャットダウンフックが起動しない
次のコードがあります。
および次の project.clj
「lein run」で実行すると、シャットダウンフックは通常のプログラム実行時にのみ実行され、SIGINT (Ctrl-C) を受信したときは実行されません。
lein の外で実行された同じコードは、SIGINT を受信した場合でも、シャットダウン フックを正常に実行します。
lein から実行して Ctrl-C で中止するときに、シャットダウン フックを実行するにはどうすればよいですか?
java - clojure で JTable に画像の背景を追加する方法
背景画像をJTableに追加するために、このプログラムをclojureで作成しました。私はprepareRenderer
機能にこだわっています。clojure は最初のパラメーターrd
(同等の Java TableCellRenderer rd
) を処理できないようです。ここですべて間違っていた可能性があります。誰かがこの問題を解決するのを手伝ってくれれば、とても感謝しています。プログラムを実行するには、tabletest.clj
ファイルに保存し、clojure プロンプトで次のように入力します。
関数をコメントアウトするとprepareRenderer
、背景画像を表示せずにコードを正常に実行できます。
JTable の背景用に独自の画像ファイルを提供してください。プログラムは以下のとおりです。
clojure - ClojureでJava相互運用機能用のJava列挙型を作成します
ClojureでJava列挙型を作成する方法がわかりません。すべてClojure内で、Javaインターフェースを使用するJava列挙型を作成し、それをJavaメソッドに渡したいと思います。これをneo4jグラフライブラリで動作させるために実行したいと思います(誰かのビルド済みインターフェイスを使用したくないので、独自の相互運用コードを記述したいと思います)。
インターネットで検索したところ、プロキシ方式は使えるようですが、一生使えません。これが私がClojureで書く必要のある同等のJavaコードです:
そして、これが私の刺し傷です(正しくありません:():
私が見逃しているこのようなことを文書化した良いウェブサイトがあるかどうかも疑問に思っています。私はClojureサイトのClojureドキュメントについて知っています。これは本当に便利ですが、たとえば使用法の例では、必要なものを常に見つけることができるとは限りません。おそらく私は良い参考書が必要ですか?
clojure - 非標準の反復型 Java API を使用した clojure a からの相互運用
私は、一連のレコードを保持するドメイン固有のバイナリ ファイルの取得 API を提供する Java クラスを使用して、clojure で作業しています。
Java クラスはファイルで初期化され、.query
メソッドを 1 つしか持たない内部クラスのインスタンスを返すメソッドを提供する.next
ため、通常の Java コレクション API とうまく連携できません。外部クラスも内部クラスもインターフェイスを実装しません。
メソッドは、内部クラスの.query
代わりに null を返す場合があります。メソッドは.next
レコード文字列を返すか、それ以上レコードが見つからない場合は null を返します。最初の呼び出しですぐに null を返す場合があります。
さらに Java クラスを作成せずに、この Java API を clojure 内からうまく機能させるにはどうすればよいですか?
私が思いつくことができる最高のものは次のとおりです。
これにより、clojure seq 抽象化を操作するための結果のベクトルが得られます。lazy-seqまたはプロトコルを使用して、Java APIからseqを公開する他の方法はありますか?