其實也很簡單,就是在C#中構建一個Process,啟動jar包,並且給jar包傳遞參數
因為我並沒有怎么學過JAVA,所以只寫了個很小的Demo,就是根據傳入的參數獲取對應的數據
以下是JAVA Demo
package com.movie;
import static java.lang.System.*;
/**
* Created by rZH on 2018/11/21
*/
public class MovieInfo {
public static void main(String[] args){
//如果當前無請求參數
if ( args.length<=0){
//則程序終止
return;
}
//構建數據對象
DataClass dc=new DataClass();
//獲取傳進來的第一個參數
String arg=args[0];
//使用數據對象根據參數來得到對應的數據
String str= dc.GetMovieListJson(arg);
//打印數據
out.println(str);
}
}
package com.movie; /** * Created by rZH on 2018/11/21 */ public class Movie { public Movie(String name,String beginTime,String room,String date,String version,String language){ this.Name=name; this.BeginTime=beginTime; this.Data=date; this.Room=room; this.Version=version; this.Language=language; } public String Name; public String BeginTime; public String Room; public String Data; public String Version; public String Language; }
package com.movie; import com.alibaba.fastjson.JSON; import java.util.ArrayList; import java.util.List; /** * Created by rZH on 2018/11/21 */ public class DataClass { public String GetMovieListJson(String date){ List<Movie> list=new ArrayList<Movie>(); list.add(new Movie("M1","13:00","1號廳","20181120","2D","國語")); list.add(new Movie("M1","13:20","2號廳","20181120","2D","國語")); list.add(new Movie("M2","13:40","3號廳","20181120","3D","國語")); list.add(new Movie("M1","14:00","4號廳","20181120","2D","英語")); list.add(new Movie("M1","15:00","5號廳","20181120","2D","國語")); list.add(new Movie("M3","14:30","2號廳","20181120","2D","國語")); list.add(new Movie("M1","15:20","3號廳","20181130","3D","國語")); list.add(new Movie("M1","14:40","4號廳","20181120","2D","國語")); list.add(new Movie("M1","16:00","5號廳","20181122","2D","原話")); list.add(new Movie("M2","16:20","1號廳","20181120","3D","國語")); list.add(new Movie("M1","16:35","2號廳","20181122","2D","國語")); list.add(new Movie("M1","17:00","4號廳","20181120","2D","國語")); list.add(new Movie("M2","17:20","3號廳","20181120","3D","國語")); list.add(new Movie("M1","17:45","5號廳","20181120","2D","粵語")); list.add(new Movie("M4","18:00","2號廳","20181120","2D","國語")); List<Movie> ml=new ArrayList<Movie>(); for(int i=0;i<list.size();i++){ if (list.get(i).Data.equals(date)){ ml.add(list.get(i)); } } String str = JSON.toJSONString(ml); return str; } }
額,原諒我真不會寫JAVA,就這些代碼我還是在網上東查西查才查出來的,也原諒我用C#的風格去寫吧
接着就是C#里面的,這個方法是在網上找的,某個博主寫的,網頁關了我找不着本人了
我的一些配置是寫在app.config文件里的
以下是該文件的內容
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<appSettings>
<!--cmd需要啟動的程序路徑-->
<add key="startPath" value="cmd.exe"/>
<!--cmd程序啟動的程序命令-->
<add key="args" value="java -jar F:\JavaMovieDemo\out\artifacts\JavaMovieDemo_jar\JavaMovieDemo.jar"/>
</appSettings>
</configuration>
static void Main (string[] args)
{
//運行程序
string result= RunCmdAndGet (ConfigurationManager.AppSettings["args"]+ " 20181120");
Console.WriteLine ("從java包得到的數據是:\r\n");
Console.WriteLine (result);
Console.ReadKey ();
}
/// <summary>
/// 啟動CMD並且獲取到數據
/// </summary>
/// <param name="query"></param>
public static string RunCmdAndGet (string query)
{
Process CmdProcess = new Process ();
CmdProcess.StartInfo.FileName = ConfigurationManager.AppSettings["startPath"];
CmdProcess.StartInfo.CreateNoWindow = true; // 不創建新窗口
CmdProcess.StartInfo.UseShellExecute = false; //不啟用shell啟動進程
CmdProcess.StartInfo.RedirectStandardInput = true; // 重定向輸入
CmdProcess.StartInfo.RedirectStandardOutput = true; // 重定向標准輸出
CmdProcess.StartInfo.RedirectStandardError = true; // 重定向錯誤輸出
CmdProcess.StartInfo.Arguments = "/c " + query;//“/C”表示執行完命令后馬上退出
CmdProcess.Start ();//執行
string result= CmdProcess.StandardOutput.ReadToEnd ();//獲取返回值
CmdProcess.WaitForExit ();//等待程序執行完退出進程
CmdProcess.Close ();//結束
return result;
}
以下圖片就是結果

