2012-01-23 13 views
0

通常、Javaアプリケーションは、start引数(.jarまたは.classのパス)で実行されます。RAMからJavaアプリケーションを実行する

しかし、私のファイルがメモリにある場合、Javaを実行するには?

これらのメソッドが存在しない場合は、おそらく引数

byte[] FileFromMemory 

または

bufferedreader FileFromMemory 

してJavaをコンパイルすることができ、私はあなたの場合はС++アプリケーションから

+0

Javaファイルのソース、またはクラスファイルの実際のバイトコードがありますか? –

+0

両方:クラスファイルのソースコードとバイトコード。そして、私はクラス検出のためにクラスローダーを使用することで少し経験があります:if(classloader.getResource( "my.class")!= null) – user1164554

答えて

5

リフレクションを使用してこれを行うか、クラスを既存のクラスローダーにロードするために、顧客クラスローダーを記述することができます。どちらのアプローチも非常に高度なトピックとみなされますので、長年のJavaの経験がなければこれを再考します。

最も簡単な解決策は、ファイルをディスクに書き込むことです。 tmpfsのようなRamdiskこれはこれを行う方法がより簡単です(それほど効率的でない場合)。

+0

(+1)再考するアドバイス。 – NPE

+0

Ramdiskは私に合っていません。 Javaファイルはディスクに保存されます。しかし、私はそれを保存し、暗号化して送信し、起動する前に解読する必要があります。保存せずに起動し、ディスクに解読します。 – user1164554

+0

この場合、カスタムClassLoaderが必要です。ルックアップを実行し、必要に応じてクラスを定義するには、findClassをオーバーライドする必要があります。例として、URLClassLoaderのソースを見てください。 –

2

を実行しようとしていますコード(.jar/.class)はRAMに存在し、ファイルシステムには存在しませんので、自分でclass loaderを提供する必要があります。

関連する問題