2012-04-14 9 views
4

私はJARファイルをダウンロードして実行する必要があるC#アプリケーションをディスクに保存しています。これはC#で可能ですか?私はWebClient経由でファイルをダウンロードすることができます(これは投稿時に私が行っていることです)&保存されたバッチスクリプトで起動しますが、ドライブ。.NETのメモリからJARをダウンロードして実行する

ありがとうございました。

+1

JARはJavaを意味することはご存知でしょうか? –

+0

それは複雑ですが、理論的には可能ですが絶対に推奨されません...いくつかのソースコードを表示してください...何を試しましたか?何がうまくいかないの? – Yahia

+0

はい、私はこれがJavaであることを認識しています。それが私が求めている理由です。私はJavaでこれをやってしまった。どこから始めたらいいのか分からないので、私は現時点ではコードを持っていません。私は今まで何ができるのかを述べたOPを編集した。 – Kaikz

答えて

1

ファイルからではなく、.NETプロセスからプロセス間通信(IPC)を介してクラスをロードする特別なJavaクラスローダーを記述することができます。さらに、クラスローダを最初にインストールした後、IPCで取得したJARを実行する小さなランチャJARが必要になります。また、.NETアプリケーションでIPC通信のサーバー部分を実装する必要があります。

しかし、それだけの価値はありますか?このような複雑なソフトウェアのメリットは何ですか?

+0

+1最後の段落。 –

+0

多くの問題を抱えているように見えますが、私はディスクに保存するだけです。ありがとう。 – Kaikz

1

JARファイルはJVMのjavaw.exeで実行する必要があります。別のプロセスには、仮想メモリ空​​間に到達してファイルデータを読み取る機能がありません。 が共に処理し共有メモリセクションを使用している場合を除きます。 javaw.exeからこのような協力関係が得られないので、ファイルが必要です。

これは、javaw.exeが実際にメモリからファイルを読み込むため、Windowsでは問題になりません。プログラムにファイルを書き込むときは、実際にはファイルシステムのキャッシュに書き込みます。 RAMにファイルデータをバッファし、ディスクに書き込むのを遅らせます。ファイルが大きい(ギガバイト以上)でなく、java(分)を起動するのに時間がかかりすぎず、マシンに十分なRAM(ギガバイトまたは2)がある場合、javaw.exeはファイルからファイルを読み取りますシステムキャッシュ。 RAMで、ディスクではありません。まるで古いRAMディスクとまったく同じ考え。

+0

うわー、この方程式にあまりにも多くの変数! –

関連する問題