• 使用C#利用cmd来调用java jar包获取其中的数据


    其实也很简单,就是在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:JavaMovieDemooutartifactsJavaMovieDemo_jarJavaMovieDemo.jar"/>
        </appSettings>
    </configuration>
    

      

     static void Main (string[] args)
            {
                //运行程序
               string result= RunCmdAndGet (ConfigurationManager.AppSettings["args"]+ " 20181120");
                Console.WriteLine ("从java包得到的数据是:
    ");
                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; 
            }
    

      

    以下图片就是结果

  • 相关阅读:
    阿里云CentOS 7无外网IP的ECS访问外网(配置网关服务器)
    CentOS 7配置成网关服务器
    Mac/Ubuntu下的数据建模工具PDMan,替代PowerDesigner
    Docker卸载高版本重装低版本后启动提示:driver not supported
    Redis连接出现Error: Connection reset by peer的问题是由于使用Redis的安全模式
    Mac流量监控/硬盘监控小工具
    CentOS 7创建自定义KVM模板(现有KVM迁移到另外一台机)
    vi显示行号
    阿里云与微软云的对照表
    CentOS下安装Jenkins(Docker/war/tomcat/java -jar)
  • 原文地址:https://www.cnblogs.com/rbzz/p/9994805.html
Copyright © 2020-2023  润新知