質問

C# から使用して対話することを検討している Java プログラムを作成しました。私たちの選択肢は何でしょうか?最適には、P/Invoke を使用して C# から参照できるライブラリ (.DLL) として Java アプリケーションをコンパイルできるようになります。ただし、オンラインで最初にいくつか検索したところ、これはオプションではないようです。

私たちは ASP.NET を使用して Java コードを活用した検索エンジンを構築できるようにすることを選択しています。そのため、他のオプションが利用できるようになる場合はお知らせください。

役に立ちましたか?

解決

ごめんなさい cannot ジャワを呼び出す code / classes Directly C# コードから。

これを行う 1 つの方法は、 wrap Java クラスを java Web Service そしてクラスを呼び出します indirectly C# コード内の Web サービス インターフェイスを介して。

別の方法は使用ですjavareg.exe これは Java クラスを次のように公開します COM. 。次の場所で見つけることができます。

C:\Program Files\Microsoft VisualStudio\VIntDev98\bin\javareg.exe

次の投稿も役立つかもしれません

他のヒント

最も簡単な方法は、おそらくWebサービスとしてのJavaライブラリの機能を公開し、あなたのasp.netアプリケーションからWeb参照を追加することです。

Javaは別のプログラムに埋め込むことを意図していないので、あなたはブリッジを必要としています。ソケット上のコマンドをリッスンするJavaプロセスを作成します。最も簡単な解決策は、ソケットを使用することです。 C#では、ソケットにコマンドを送信し、答えを読みます。

ここでの主な問題は、シリアル化されていますが、XMLを使用している場合、それはもう、このような大きな痛みはありません。 この記事を参照)XMLシリアル化を内蔵またはカスタムフレームワークを試してみてくださいhref = "http://xstream.codehaus.org/" のrel = "nofollowをnoreferrer"> XStreamののか、シンプルのます。

.dllファイルでJavaをラップすることは確かに可能であり、10年以上にわたって、コアJavaプラットフォームの一部となっています。 JNI(Javaネイティブ・インターフェース)を使用すると、Cスタイルのリンクを使用してJavaクラスを実行することができることを意味し、あなたのコードでJVMを埋め込むためのインタフェースを持っています。これはあなたが簡単なCのラッパーを記述することを要求することに注意してください、内のサンプルがあります。 http://java.sun.com/docs/books/jni /html/invoke.html#11202する

これらの他の記事のいくつかが示唆したよう

、時にはそれがあまり密結合させることが望ましいですので、あなたは別の設計を使用して検討する必要があります。 1つのオプションは、C#のコードからの要求のためのJavaアプリケーションは、定期的にポーリングし、簡単なデータベース、だろう。あなたがタイトなカップリングをしたい場合は、コールバックのようなもののために、あなたは、分散インタフェースで見ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top