我已经尝试了 4 个小时来让这个东西运行起来,但我在不明白为什么的情况下设法做到了:/
我创建了一个非常简单的 java 程序,其 GUI 包含 2 个文本框,人们可以在其中键入 exe 文件的路径。单击按钮时,它会读取此框中的文本并运行相应的软件。
当人们在目录框中键入“C:\Program Files (x86)\thatsoftware\”并在要运行的文件中键入“C:\Program Files (x86)\thatsoftware\run this.exe -arg”时,这似乎有效盒子:
Runtime.getRuntime().exec(txtFile.getText().toString(), null, new File(txtPath.getText().toString()));
但是,当我只设置 1 个目录框并将文件和参数附加(硬编码)到它时,它将不起作用:
String fileToRun=txtPath.getText().toString()+"run this.exe -arg";
Runtime.getRuntime().exec(fileToRun, null, new File(txtPath.getText().toString()));
我也尝试将文件作为数组传递:
String fileToRun[]={txtPath.getText().toString(),"run this.exe"," -arg"};
Runtime.getRuntime().exec(fileToRun, null, new File(txtPath.getText().toString()));
无济于事。当我尝试将它作为 processbuilder 运行时,会出现同样的问题。我会收到一条错误消息,例如“文件 C:\Program Files (x86)\thatsoftware\ -arg”不存在。”很奇怪,因为参数已传递,但显然不是文件名。
当用户在文本框中键入整个字符串时,我可以设法运行它,但如果我在代码中添加参数和/或文件名,则无法运行它。有人能这么好心地向我解释一下,并告诉我如何只用一个文本框来完成吗?