java 启动exe程序,传递参数和获取参数操作

1、java中启动exe程序 ,并添加传参

String[] cmd = {"hh.exe","12315"};

 Process process = null;
 try {
 ProcessBuilder pb = new ProcessBuilder();
 pb.command(cmd);
 process=pb.start();
 } catch (Exception e) {
 e.printStackTrace();
 }finally {
 if (process != null){
 process.destroy();
 }
 }

在cmd中,第一个参数所要启动的EXE程序,第二个参数为 传参;

2、在exe程序中获取 传递的参数

在步骤一中打开的“hh.exe”程序,也是基于java编写的。

我们打印一下main方法的args[],即可拿到由上一个程序传递的参数。

 public static void main(String args[]) {
// for (int i=0;i<args.length;i++){
 System.out.println(args[i]);
// JOptionPane.showMessageDialog (null, args[i], "日志", JOptionPane.CANCEL_OPTION);
// }
// System.exit(0);//结束 当前进程

补充:java程序生成带参数的可执行exe文件

简介

最近写了一个代码生成工具,可根据一些简单的配置自动生成model、dao、service、serviceImpl和controller层的代码,减少冗余代码的开发量。听取了同事的建议,把工具制作成可执行工具,这样可保证生成工具的独立性,并且工具对原来的项目代码不存在依赖。

环境配置

1、JDK环境

2、idea或Eclipse

3、exe4j 下载地址:https://www.ej-technologies.com/download/exe4j/files

操作步骤

1、将java程序打成jar包(不管你是web项目还是java application)。

在idea中打jar包的方式为:File->File Structrue->Atifacts->选择"+"Add jar(From modules with dependencies…) ,然后选择项目点击OK->Build->Build Atifacts->Build or Rebuid。

2、使用exe4j将打包好的jar包生成exe可执行文件。

(1)下载并安装exe4j,进入安装目录的bin文件夹下,双击打开"exe4j.exe"

(2)点击next,选择"JAR in EXE" mode

(3)点击next,输入将要生成的应用的名称和生成exe文件的路径

(4)点击next,这里注意点击32-bit or 64-bit,如果是64位JDK环境,就勾选"Generate 64-bit executable"

(5)点击next,输入Executable name,并选中Console application,表示我们以命令行窗口的形式运行生成工具。

(6)点击next,右侧点击绿色“+”,Archive处选择生成的jar文件,然后选择jar文件中的主程序Main所在类

(7)点击next,输入JRE的环境配置

(8)连续点击next,进入到如下界面:

到此exe文件就生成成功了

运行

生成的exe文件在第三步设置的输出路径中,

1、进入cmd命令行窗口,进入exe文件所在目录。

2、输入生成的exe文化的名称即可执行该exe文件,如本例中输入"cg.exe"即可运行文件

可带参数运行的可执行文件

通常我们想要在运行时指定配置参数,这时,我们只需要在"cg.exe"后面接上空格和参数,如"cg.exe -t",在java程序Main方法中:public static void main(String[] args) args数组 可以接收到跟在命令行后面的参数。

注意事项

1、如果你的JDK环境为64位,第(4)步切记勾选"Generate 64-bit executable"

2、运行可执行文件就是不输出,可能为第(5)步忘记勾选Console application。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • java HttpClient传输json格式的参数实例讲解

    最近的一个接口项目,传的参数要求是json,需要特殊处理一下. 重点是这两句话: httpPost.setHeader("Content-Type", "application/json;charset=UTF-8"); se.setContentType(CONTENT_TYPE_TEXT_JSON); 这两句话的作用与jmeter的设置header信息类似 package com.base; import java.io.UnsupportedEncodingE

  • java 启动exe程序,传递参数和获取参数操作

    1.java中启动exe程序 ,并添加传参 String[] cmd = {"hh.exe","12315"}; Process process = null; try { ProcessBuilder pb = new ProcessBuilder(); pb.command(cmd); process=pb.start(); } catch (Exception e) { e.printStackTrace(); }finally { if (process !

  • 一文助你搞懂参数传递原理解析(java、go、python、c++)

    前言 最近一年多的时间陆续接触了一些对我来说陌生的语言,主要就是 Python 和 Go,期间为了快速实现需求只是依葫芦画瓢的撸代码:并没有深究一些细节与原理. 就拿参数传递一事来说各个语言的实现细节各不相同,但又有类似之处:在许多新手入门时容易搞不清楚,导致犯一些低级错误. Java 基本类型传递 先拿我最熟悉的 Java 来说,我相信应该没人会写这样的代码: @Test public void testBasic() { int a = 10; modifyBasic(a); System.

  • 微信小程序向Java后台传输参数的方法实现

    首先,微信小程序我使用的是微信web开发者工具 想要向后台传输数据,需要在js中写 在微信小程序的官方文档中可以看到一个api叫wx.request它的作用是用来发送https请求的 在js代码中,我们先使用wx.request这个api,它需要我们去写url,这个url其实就是Java代码部署在服务器上运行后的地址,这里我们没有真实服务器,我们使用tomcat去运行后端代码,将这个url复制给微信小程序的url中 我的Java代码在运行时出现一个问题,就是找不到我这个类,一直报404错误,一个

  • Java ThreadPoolExecutor的参数深入理解

    Java ThreadPoolExecutor的参数深入理解 一.使用Executors创建线程池    之前创建线程的时候都是用的Executors的newFixedThreadPool(),newSingleThreadExecutor(),newCachedThreadPool()这三个方法.当然Executors也是用不同的参数去new ThreadPoolExecutor     1. newFixedThreadPool() 创建线程数固定大小的线程池. 由于使用了LinkedBlo

  • Java参数传递实现代码及过程图解

    一.下面是一段代码 二.运行的结果为 三.过程分析 1.初始时,栈中有main方法与change方法,在main方法中各个元素进行了初始化. 2.之后执行了change方法,实参值传递到形参中. 3.在change方法中进行了相关操作. 4.查看main中各元素的值. i为1.str为hello.b为200.arr[0]为2.my.a为11 *上文中的代码如下: package cn.yang37.zother.example; import java.lang.reflect.Array; i

  • java正则表达式判断前端参数修改表中另一个字段的值

    前端传参,调用接口 将两个值都传给后端,做比较,符合条件,修改数据表中另一个字段值 init (id) { this.dataForm.id = id || 0 this.visible = true this.$nextTick(() => { this.$refs['dataForm'].resetFields() if (this.dataForm.id) { this.$http({ url: this.$http.adornUrl(`/这里是接口/${this.dataForm.id}

  • JS控制静态页面传递参数并获取参数应用

    在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a页面已经打开,b页面无论是否打开.在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面. 注意:不涉及跨域问题. 想了很久,终于想到了解决方案. 第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面 这是a页面代码: <button>跳转设置</button

  • 浅谈angular4.0中路由传递参数、获取参数最nice的写法

    研究ng4的官网,终于找到了我想要的方法.我想要的结果是用'&'拼接参数传送,这样阅读上是最好的. 否则很多'/'的拼接,容易混淆参数和组件名称. 一般我们页面跳转传递参数都是这样的格式: http://angular.io/api?uid=1&username=moon 但是在SPA单页应用中却是下面的结果居多[初级视频都是这样敷衍的] http://angular.io/api/1/moon 那么怎么实现我说的结果呢? 重点开始了. 实现从product页面跳转到product-det

  • C#分析URL参数并获取参数和值对应列表的方法

    本文实例讲述了C#分析URL参数获取参数和值对应列表的方法.分享给大家供大家参考.具体分析如下: 这个C#函数用于分析url中传递的所有参数,输出一个参数名和参数值对应的NameValueCollection列表,经常能用得到 /// <summary> /// 分析 url 字符串中的参数信息 /// </summary> /// <param name="url">输入的 URL</param> /// <param name=

  • Spring MVC url提交参数和获取参数

    普通URL提交参数 该格式url为:url.do?param1=mahc&param2=8888.00 需要在上文中的HelloController对象添加方法如下: /** * Spring MVC URL提交参数 * @param name * @return */ @RequestMapping("/param") public ModelAndView getInfo(@RequestParam("name") String name){ Strin

  • 自定义vbs脚本实现开机后延时启动指定程序的方法

    概述 系统开机时,顺带自动启动了不少驱动程序,使得电脑开机后鼠标要呆滞许久.为了加快windows的开机速度,在参考网上不少大牛的资料后,整理出使用vbs脚本实现开机后延时启动程序的方法 vbs内容示例: 复制代码 代码如下: Dim delayer Set delayer = CreateObject("WScript.Shell") WScript.sleep 8000 delayer.Run """C:\Program Files(x86)\King

  • Spring MVC如何使用@RequestParam注解获取参数

    目录 使用@RequestParam注解获取参数 @RequestParam无法获取参数 使用@RequestParam注解获取参数 创建Hello控制器类 package com.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bin

  • php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法

    实例如下: <? //include_once("inc/auth.inc.php"); include_once("inc/conn.php"); $HTML_PAGE_TITLE = _("运行"); include_once("inc/header.inc.php"); //路径如下 /* http://127.0.0.1/general/winexe/exe1.php?PROG=C:/Program Files

  • java使用Process调用exe程序及Process.waitFor()死锁问题解决

    目录 前言 文章参考 1. 使用process调用exe程序 2. waitfor 问题描述分析 3. 死锁问题解决 总结 前言 最近在开发android的同时也在开发java ,碰到了需要使用java 程序调用exe的需求,这里我使用的 process 来调用的.该篇文章 读完需要8+分钟,文章类型为 小白入门类型,此处主要记录,方便以后学习补充… 如有不正确的地方还望海涵 及 指出…. 文章参考 process参考 waitfor挂起解析 1. 使用process调用exe程序 Proces

  • Unity3D启动外部程序并传递参数的实现

    之前开发项目,一直都使用的是外壳程序加子程序的模式,通过外壳程序去启动子程序,外壳程序和子程序之间的通信,是使用配置文件完成的. 我总觉得这样通信很麻烦,因为外壳程序需要对配置文件进行更改和写入,然后子程序又要读取信息.而且整合的时候,会导致有很多配置文件,而且需要对路径做很多处理和限制. 我发现Process.Start()函数中,是可以传递参数的. 也就是说,我们是可以在使用Process.Start()函数启动外部程序时,传递参数的进行通信的. 具体操作如下: public void St

随机推荐