1. java后台启动本地exe程序如何传递参数到exe程序并接收
List<String> commands = new ArrayList();
commands.add("a.exe");
commands.add("abc");
ProcessBuilder pb = new ProcessBuilder();
pb.command(commands);
Process pr = pb.start();
2. java 命令行 传递参数
不要在Java中处理“<”(重定向)符号,那是留给操作系统来处理的。
要想将将输入从定向文件传递给Java程序,可采用如下办法。
(1)首先制作批文件(Windows下为.bat文件,Linux/UNIX下为.sh文件)。给你作个例子(以Windows为例,制作一个名称为start.bat的文件):
@set/p A= >nul
@set/p B= >nul
@set/p C= >nul
@set/p D= >nul
@java 您的java启动类名 %A% %B% %C% %D%
@set/p A= <nul
@set/p B= <nul
@set/p C= <nul
@set/p D= <nul
这里只有四个参数,您可以添加更多的参数。
之后编写输入重定向文件(in.txt),内容范例如下:
para1Value
para2Value
para3Value
...
在执行的时候,使用格式如下:
start.bat < in.txt
这时,您的Java启动类.main才能接收到从定向文件里的参数。
建议在批文件中可以多设一些参数,即使输入重定向文件内提供的参数值数量不足也没有关系,操作系统不会传递没无值参数。
3. java怎样打包后能成为带参数的exe
有两种比较易用的方法:
关于两种将Java程序转化为.exe程序工具的使用及比较
一 JSmooth
1.出品
Jsmooth,Sourceforge.net
2. 类型
free
3. 下载
http://jsmooth.sourceforge.net/download.php
4. 步骤
a)利用Eclipse将所需要的主类打成可独立运行的jar包,注意添加manifest属性和MainClass。
b)新建一个Jsmooth工程
c) 在sketlon中选择“Console“ 或者 “Windowed“
d) 在Executable中的配置:
i. Executable Binary:填写目的输出源的名称。如test.exe.
ii. Executable Icon :选择一个好看点的图标
iii. Current Driectory :.(表示当前工程目录,当然也可行换成别的,As you wish.)
e) 在Application中的配置:
i. Classpath:选中我们所生成的jar包以及运行该jar文件所需要的类库
ii. Main-Class:选中我们所需要运行的主类。
iii. 可选项Use an embedded jar:运行该exe时可能需要到的类库(这里只能有一个类库)。
f) 在JVM Selection中的配置:
i. Minimum JVM Version:写一个需要运行该程序所需的最低的就JVM的版本,比如1.4
g) Compile:OK,编译成功后,在你的输出目录上就会有一个崭新的exe程序了。Just enjoy it.
二 exe4J
1. 出品
ej-technologies
2.类型
Shared software,needs license
3.下载
http://www.ej-technologies.com/download/exe4j/files.php
4. 步骤
a) 利用Eclipse将所需要的主类打成可独立运行的jar包,注意添加manifest属性和MainClass。
b) 新建一个exe4j工程
c) 选择“JAR in exe“ mode
d) 在Configure application中的配置:
i. Short name:随便写.
ii. Ourput Driectory :选择输出路径。
e) 在Configure Executable中的配置:
i. Executable type: 有三个选项,图形,控制台.或服务。从简单点开始吧,这里我们选console
ii. Executable name:填写目的输出源的名称。如test.exe
iii. Icon file:exe图标文件,但必须是.ico文件
f) 在Configure Java invocation中的配置:
i. Classpath:选中我们所生成的jar包以及运行该jar文件所需要的类库
ii. Main-Class:选中我们所需要运行的主类。
iii.Arguments(可选项):输入参数。我们这里暂不需要。
g)在Configure JRE中的配置:
i. Minimum Version:写一个需要运行该程序所需的最低的就JVM的版本,比如1.4
h) 一直next,对于所遇到的步骤选项都默认,直到finish:OK。编译成功后,在你的输出目录上就会有一个崭新的exe程序了。Just enjoy it.
三 总结和比较
由Java生成exe的工具还有很多,上面两种是我个人觉得用起来觉得比较方便的。两者的原理基本相同,但具体用起来还是有一点点不太一样的:
1.相同点
a) 最大的相同点当然是他们原理是互通的。都是通过将可运行的java程序打成可执行的jar包。再作转换。
b) 所生成的exe可执行程序,需要在装有比minimum version高的JVM环境下运行。
2. 不同点
a) 生成exe的时候,如果想要exe只需要pure JVM的环境(不需要第三方的类库)就可以运行的话。在JSmooth需要将所有的用到的第三方类库压缩成一个jar包(因为它有个embeded jar的选项),这就比较麻烦,因为当需要的jar多于一个时候,就需要将这些jar包先用jar –xvf 解压缩,在用jar –cvf重新制作新的jar文件,再放到embeded jar选项中去;而exe4J则会把classppath中所用到的jar包也会编译到exe中去。
b) JSmooth是免费的;而exe4J是共享软件,需要注册,否则在执行exe的时候会弹出很惹人烦的提示框。
c)ico文件的选择:exe4J要求严格的ico文件,而JSmooth则可以兼容jpg等其他各式的图片。
参考资料:http://zicozhang.spaces.live.com
4. java 调用exe 怎么传递参数
public class Test {
public static void main(String[] args) throws IOException {
try {
// String[] cmds = {"cmd.exe","/c"," dir","c:",">","d://aa.txt"};
// Process pro = Runtime.getRuntime().exec(cmds);
Process pro = Runtime.getRuntime().exec("cmd.exe /c dir c: > d://aa.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream(),"GBK"));
String msg = null;
while ((msg = br.readLine()) != null) {
System.out.println(msg);
}
} catch (IOException exception) {
}
}
}
执行完成之后 会在d://下面生成一个aa.txt文件 里面保存了 dir的结果 其中 > 是 重定向 意思是讲执行结果从定向到 d://aa.txt
5. java 中 如何通过命令行来传递参数
可以在命令行运行java程序时加上程序的参数。
例子如下:
public class HelloWorld{
public static void main(String args[]){
System.out.println("temp=" + args[0]);
}
}
源代码截图:
解释一下: String[ ] args
该参数,是一个字符串数组,用来接收从命令行输入的参数
1. 参数之间用空格隔开
2. java解释器会自动处理,把用空格隔开的每一个参数通过args数组传递给买呢()方法。
3. 参数的下标从0开始,args[0]表示第一个参数,例如java HelloWorld 10 20 30
4.可以有多个空格,多个空格会被忽略。
(5)java给exe传参数扩展阅读:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
6. 怎样在java类中调用带参数的可执行文件(比如:.exe,.sh等等)
比如调用exe程序"java -version":
String[] cmd = new String[] {"java", "-version"};
Process process = Runtime.getRuntime().exec(cmd);
BufferedReader r = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String l = null;
while((l = r.readLine()) != null) {
System.out.println(l);
}
Process有两个流可以读取外部程序的标准输出(就是运行结果啦),一个是getInputStream,一个是getErrorStream。
如果要调用C或C++动态链接库中的函数的话,就要复杂一些,要用到JNI了。
7. java 调用exe 需要给exe传参数
public class Test {
public static void main(String[] args) throws IOException {
try {
// String[] cmds = {"cmd.exe","/c"," dir","c:",">","d://aa.txt"};
// Process pro = Runtime.getRuntime().exec(cmds);
Process pro = Runtime.getRuntime().exec("cmd.exe /c dir c: > d://aa.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream(),"GBK"));
String msg = null;
while ((msg = br.readLine()) != null) {
System.out.println(msg);
}
} catch (IOException exception) {
}
}
}
执行完成之后 会在d://下面生成一个aa.txt文件 里面保存了 dir的结果 其中 > 是 重定向 意思是讲执行结果从定向到 d://aa.txt
希望对你有帮助
8. 请问在JAVA中,用命令行传递参数是什么意思
在你配好JDK环境变量的前提下
在命令提示符中(cmd.exe)输入,java ClassName parameter
这就是在编译时象ClassName文件传递参数的方式,parameter为参数实体,可以用空格来传递多个参数,该参数会传递到public static void main(String[] args)中的args数组中