2011-01-19 13 views
5

Java環境のコンテキストから.NETアプリケーション(Monoと互換性があります)を開始したいと考えています。Linux、Mac、WindowsのJavaから.NETアプリケーションを起動するにはどうすればよいですか?

私は、モノがインストールされているかどうか調べて、場所を見つけて、.NETアプリケーションパスをパラメータとして使用して起動するようにしなければならないと思います。

しかし、それを実行するための堅牢な方法は何ですか?それとも良い方法がありますか?

おそらく私はコンテキストを明確にすべきです:相互作用が制限された環境でJava部分がプラグインとして実行されているため、設定ファイルやユーザーインターフェイスを必要とせずに方法を見つけることを本当に好むでしょう。

+1

カウント「アプリ内の設定オプションとしてモノエグゼキュータへのパスを持っている」のか? –

+0

本当にそれが自動的に好きですか? –

答えて

1

すでに/モノが既にインストールされている.NETていると、あなたはexeファイルをダブルクリックすることができますし、それを実行し、あなただけのように簡単 Desktop.open()

使用することができた場合:

Desktop.getDesktop().open(file); 

参照をここでは詳細は: Using the Desktop API in Java SE 6 EDIT

私は私の林を起動する必要がありました私はモノラルアプリケーションを持っており、これはちょうどいい仕事でした:

class Launch { 
    public static void main(String ... arg) { 
     new ProcessBuilder("/usr/bin/myapp").start(); 
    } 
} 

繰り返しました!

+0

これはあなたのモノインストールに依存します。私のLinuxシステムでは、monoを呼び出して、そのアプリケーションを引数として渡す必要があります。 –

+1

:-oああ、その場合は、次のようにするだけです: '新しいProcessBuilder("/path/to/mono "、" app ")。start();'それだけです。あなたはそれがインストールできる場所を推測するだけではありません。設定ファイルを使用したくない場合は、ハードコードしてください。実際には、実行可能ファイルが$ PATH内にある場合、 'new ProcessBuilder(" monoexecutable "、" app ")。start();'で十分です。あなたはすでにそれを試しましたか? – OscarRyz

+0

+1は、実行可能ファイルがPATH上にあることが予想される場合、どれほどシンプルなものかを記述しています。これは、Javaアプリケーションでハードコーディングされたパスを持つ方が望ましいはずです。 –

0

興味深い質問!答えは、あなたがLinuxの

を実行している場合は、間違いなくあなたがWindowsの

を実行している場合は、シェル経由でCLRの実行可能ファイルを実行することができますCLRの実行

を実行するためにモノを必要とにかく

ことは簡単ではありませんまたははローカルMonoを使用します(MonoもWindows上で動作します)。しかし、MonoをWindowsで実行する理由はほとんどありません。

最初にJavaでOSを検出してください(どうすればいいか教えてください)。そして、Linuxを実行している場合、Monoを見つけてください。

Monoの主な実行ファイルは通常/usr/binですが、$PATHにありますので、コンソールからmono Executable.exeを実行できます。このようなコマンドをJavaで実行できない場合、またはMonoがパスにない場合は、whereis monoを実行して実行可能ファイルへのパスを取得する必要があります。

他にはありません。

+0

これは難しくないモノと.netの実行可能ファイルは "ProcessBuilder"クラスで実行できます。私の答えは – OscarRyz

+0

ですが、MonoはJavaのように動作します: "java -jar App.jar"のように "mono App.exe"そのため、彼はモノ実行可能ファイルへのパスを必要としています –

0

私は、.NetやMonoについては何も知らないが、私は、通常のものより.Netアプリケーションを起動することはあまり変わらないと思いますか?

環境とのインターフェイスに使用されるクラスはjava.lang.Runtimeです。また、コマンドを実行することもできます。 (.exec-methods)

適切なコマンドを構築するためには、java.lang.Systemのさまざまな機能が役に立つでしょう。

このオプションは、あなたの特定の状況の要件には不十分である場合には、JNIがあなたの唯一のオプションであるかもしれない...

関連する問題