【发布时间】:2016-06-12 21:50:36
【问题描述】:
我正在制作一个 Swing 程序,该程序将用于使用 G++ 轻松运行 C++ 程序,但我一直坚持实际运行该程序。我尝试使用 Runtime.getRuntime() 或类似的东西,但它似乎没有用。而且,使用它只运行命令,并且不允许输入。显然,由于它将运行一个程序,它需要能够接收命令行输入,所以有没有办法通过打开 cmd 然后在该程序实例中执行命令来运行命令,允许用户输入内容?
【问题讨论】:
我正在制作一个 Swing 程序,该程序将用于使用 G++ 轻松运行 C++ 程序,但我一直坚持实际运行该程序。我尝试使用 Runtime.getRuntime() 或类似的东西,但它似乎没有用。而且,使用它只运行命令,并且不允许输入。显然,由于它将运行一个程序,它需要能够接收命令行输入,所以有没有办法通过打开 cmd 然后在该程序实例中执行命令来运行命令,允许用户输入内容?
【问题讨论】:
看看 ProcessBuilder 类,我认为它可以满足您的要求:https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html
【讨论】:
如何在cmd中运行命令,并打开它允许输入? (Java)
首先,你是否在使用 main 方法中的参数?
public static void main(String[] args) //<--- arguments will be send to args[x]
{
}
如果你希望你的程序能够接收参数,你必须处理那些接收到的参数,如果没有,即使参数被传入。什么都不会发生。
示例:
class MyFullName{
public static void main(String[] args){
if(args.length() != 2)
system.out.println("2 arguments needed");
else
System.out.println("Your fullname is: " + args[0] + " " args[1]);
}
}
上面的例子是一个程序,它接收名字和姓氏并将它们组合在一起并打印出来。您输入的参数将被传递到 args 字符串数组中。
测试运行:
javac MyFullName.java
java MyFullName adam smith
Your fullname is adam smith
如果您使用的是 Windows 并且不想在命令提示符下键入命令,您可以将这些代码放在批处理文件中。执行批处理文件将执行这些命令,这将启动您的程序。
【讨论】:
Runtime.getRuntime().exec(batch file path)吗?
cd c:/windows/user/folderName。然后java class name.
此示例 Java 程序执行 'dir' 命令读取 dir 命令的输出并打印结果。
import java.io.*;
public class doscmd
{
public static void main(String args[])
{
try
{
Process p=Runtime.getRuntime().exec("cmd /c dir");
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
System.out.println(line);
line=reader.readLine();
}}
catch(IOException e1) {}
catch(InterruptedException e2) {}
System.out.println("Done");
}}
【讨论】: