Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9743

[.net、Java連携]C#.netで.jarを実行するンジャー

$
0
0

どうしてもJavaを使わないとできない処理をC#.netから起動する必要が出た場合、
その実装に困りますよね…
そこで参上!C#.netで.jarを実行するンジャー!!(ここまで茶番)

Java側のプログラム

java側のプログラムはmainメソッド(関数)を入れます。
main関数のコマンドライン引数"args"でC#から値を受け取ります。
下記サンプルプログラムでは、1つの引数でメッセージ:msgを受け取り、それを表示しています。

Sample.java
publicstaticvoidmain(String[]args){// TODO 自動生成されたメソッド・スタブif(args.length<=0){System.out.println("出力メッセージなし");}else{System.out.println("出力メッセージ:"+args[0]);}// Enterキー入力待ち// 参考:https://stackoverflow.com/questions/26184409/java-console-prompt-for-enter-input-before-moving-onSystem.out.println("Press \"ENTER\" to exit...");Scannerscanner=newScanner(System.in);scanner.nextLine();}

プログラムができたら、実行可能な.jarファイルを生成しましょう。

C#(.net)側のプログラム

C#側では、Processクラスのオブジェクトで.jarファイルを起動します。
.jarファイルは、C#(.net)の実行ファイルが生成されるDebug/Releaseフォルダに配置するとファイル指定が楽です。

// コマンドプロンプトを表示して実行する場合Process.Start("java","-jar (.jarファイル名orパス) (引数) (引数)…"))// コマンドプロンプトを表示せずに実行する場合Process.Start("javaw","-jar (.jarファイル名orパス) (引数) (引数)…"))

.jarファイルの実行中にC#のプログラムを止めたい場合、WaitForExitメソッドを使いましょう。

// 終了待ちjar.WaitForExit();

.jarファイルの実行結果は、ExitCodeメソッドで受け取れます。
※javaのmainメソッドが void main()なら、戻り値0で正常終了

// 結果取得(0:正常終了)jar.ExitCode();

オブジェクトを作成しますので、usingやclose,disposeなどによるオブジェクト解放をお忘れなく。
参考:確保したリソースを忘れずに解放するには?[C#/VB]
実装例↓

ConnectJar.cs
/// <summary>/// .jar実行/// </summary>/// <param name="msg">メッセージ</param>/// <returns>True:成功/False:失敗</returns>publicstaticboolExcecute(stringmsg){boolresult=false;Processjar=null;try{// .jarをプロセスとして起動using(jar=Process.Start("java","-jar Sample.jar "+msg)){// 終了待ちjar.WaitForExit();// 結果取得(0:正常終了)if(jar.ExitCode==0)result=true;}}catch(Exceptione){MessageBox.Show("例外発生\n"+e.Message);}returnresult;}

あとはC#.netを実行するだけ…!
サンプルコード全体は下記リポジトリにあります。
CSJarソースコード

補足


Viewing all articles
Browse latest Browse all 9743

Trending Articles