問題タブ [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.

0 投票する
3 に答える
9111 参照

java - 静的ウィンドウ ライブラリを dll に変換する

ライブラリに多数の静的ファイルが含まれており、 (JAVA コードから「dll」を動的に呼び出すことができる Java ライブラリ)*libからそれらにアクセスしたいので、魔法のように静的ライブラリを dll に変更する方法はありますか?JNA

コードは Visual Studio を使用してコンパイルされており (関連があることを願っています)、適切なヘッダー ファイルもあります。

私はソース コードにアクセスできません。また、無料の (ビールのような) ツールのみを使用して実行したいと考えています。

0 投票する
2 に答える
2484 参照

clojure - Clojure で Java クラスを拡張し、そのクラスのメソッドと同じ名前のメソッドを定義すると、何が起こるでしょうか?

私はプログラミング Clojure を読んでいますが、Stuart の主な Java Interop の例を理解するのに苦労しています。彼は DefaultHandler を拡張し、startElement メソッドを作成してから、そのハンドラーを XML パーサーに渡します。私が理解していないのは、正確に何が起こっているのかです。彼の startElement の実装は、DefaultHandler で定義されたものをオーバーライドしますか? よくわかりません。私は Java の経験がなく、オブジェクト指向の経験もほとんどありません。

ありがとう!

0 投票する
3 に答える
3593 参照

import - Clojure には Java の import package.* に相当するものがありますか?

または、インポートするすべてのクラスを具体的に列挙する必要がありますか?

私は今Clojureを学んでいます.REPLで次のようなことができると便利です:

これは有効な構文ではありませんが、同等の機能を備えていると便利です。特にいじくり回しているときに、タイピングを節約できます。実際の製品コードでは、言語に関係なく、インポートする各クラスを常に列挙しますが、そうする必要がないのは非常に便利です。

0 投票する
3 に答える
2205 参照

clojure - Java クラスから Clojure 名前空間に `static final` 定数をプルするにはどうすればよいですか?

Clojure バインディングで Java ライブラリをラップしようとしています。Java ライブラリの 1 つの特定のクラスは、静的な最終定数の束を定義します。次に例を示します。

defクラスを調べて、これらの定数をそれぞれ明示的に -ing せずに Clojure 名前空間に取り込むことができるのではないかと考えました。

たとえば、次のように明示的に接続する代わりに、次のようにします。

モジュールが読み込まれると、クラスを調べてFoo動的に接続しfoo-barfoo-some-constantClojure 名前空間に入れることができます。

これを行う理由は 2 つあります。

FooA)クラスに追加された新しい定数を自動的に取り込みます。言い換えれば、Java インターフェースが新しい定数を追加した場合、Clojure ラッパーを変更する必要はありません。

B)定数がよりClojure風の命名規則に従うことを保証できます

私はこれを行うことに自信があるわけではありませんが、Clojure/Java の相互運用に関する知識を広げるために尋ねるのは良い質問のようです。

ありがとう

0 投票する
1 に答える
1982 参照

servlets - サーブレットインターフェイスを実装するclojureタイプを定義するにはどうすればよいですか?

(最先端のclojure 1.2ブランチからの)deftypeを使用して、Javaサーブレットインターフェイスを実装するJavaクラスを作成しようとしています。以下のコードがコンパイルされることを期待します(あまり有用ではありませんが)。

しかし、それはコンパイルされません。コンパイラは次のメッセージを生成します。

私はnilを返すので、これは私には意味がありません。したがって、メソッドの戻り型がvoidであるという事実は問題にはなりません。たとえば、java.util.Setインターフェイスの場合:

問題なくコンパイルされます。

では、サーブレットインターフェイスで何が間違っているのでしょうか。

明確にするために:典型的なケースは、このインターフェースを直接実装するのではなく、サーブレット抽象クラスの1つをサブクラス化することですが、それでもこれを行うことは可能です。

スタックトレース:

(deftypeサーブレット...のスタックトレースは次のとおりです。

0 投票する
2 に答える
2586 参照

.net - JavaDateを.NETDateTimeに変換する.NETのMPXJ

MS Project(MPP)ファイルの解析に.NETのMPXJライブラリを使用していますが、うまく機能しています。私が抱えている問題の1つは、タスクの開始日と終了日をデータモデルで使用するために.NETDateTimeに変換しようとしていることです。

私はすべてのタスクを実行し、両方ともjavva.util.Dateオブジェクトを返すtask.getFinish()とtask.getStart()を呼び出しています。

task.getFinish()。getYear()、task.getFinish()。getMonth()などを使用して新しいDateTimeオブジェクトを作成すると、それらが廃止されたことを警告します。

MPXJから.NETDateTimeオブジェクトに開始日と終了日を取得するための最良の方法は何ですか?

ありがとう。

0 投票する
2 に答える
876 参照

clojure - Clojure の :gen-class と double 配列

Double の 2D 配列を入力として取る fn を :gen-class しようとしています。同様のトピックに関する投稿と解決策をここで既に見ましたが、まだ実用的な解決策を作成できません。

入力に"[[D"基づいて使用typeします。これは .class ファイルにうまくコンパイルされます。

ここで、別の .clj ファイルに移動すると、次のようになります。

repl から呼び出すとbar、次のエラーが表示されます。

java.lang.IllegalArgumentException: 一致するフィールドが見つかりません: クラス [[D の heat_map2

何かご意見は?

0 投票する
1 に答える
939 参照

scala - Scala から Java を呼び出す: 保護されたコンストラクター

これは、Scala 2.8.0 final でエラーなしでコンパイルされます。

ただし、実行すると次のようになります。

これはバグ、機能、または既知の制限ですか?

0 投票する
2 に答える
1004 参照

java - ClojureでプリミティブJavaタイプをどのように参照しますか?

リフレクションを使用して、ClojureからJavaオブジェクトのメソッドを取得したいと思います。引数の型の1つはJavaプリミティブであり、Clojureからそれらを参照する方法がわかりません。

たとえば、取得したいとしますString.valueOf(boolean)。私の最も近い推測はすることです

Booleanただし、これはプリミティブ型自体ではなく、ボックス化されたバージョンであるため失敗します。試しましたがboolean、これは組み込みのClojure関数を参照しており、bool未定義です。

ClojureでプリミティブJavaタイプを参照するにはどうすればよいですか?

0 投票する
2 に答える
2001 参照

clojure - deftypeで作成されたクラスにコンストラクターを追加します

Javaとの相互運用性のために、初期化を実行するnullaryコンストラクターを持つクラスが必要です。このクラスのオブジェクトは、可変のJavaフィールドに似たものを持っている必要があります(つまり、オブジェクトはゲームのバックエンドを表し、ゲームの状態を維持する必要があります)。

deftypeは、nullaryコンストラクターを提供することを除いて、私がやりたいことをすべて実行します(フィールドを持つクラスを作成しているため)。

フィールドを公に読めるようにする必要はないので、次の4つの解決策を考えることができます。

gen-classを使用します。私はそれを避けることができればこれをしたくありません。
どういうわけか、deftypeの知識の外でプライベートメンバー変数をエンコードします。これはできないと言われました。
nullaryコンストラクターも作成する変更されたdeftypeを記述します。率直に言って、私はこれに十分なclojureを知りません。
deftypeによって作成されたクラスを取得し、それに新しいコンストラクターを追加します。

この最後に、Javaクラスが必要です。これは、クラスから新しいオブジェクトを作成するJavaコードにそれを渡すためです。

gen-classを使用する以外に、私が提案した(または私が考えていなかった)解決策は実行可能ですか?