java createprocess error=2_可能原因java.io.IOException:CreateProcess error = 2,系统找不到指定的文件...

我正尝试通过java执行'VACUUM VERBOSE'命令。

这是我的代码

public void executeCommand()

{

String cmd1= "cmd.exe /c start";

String location="C:\\PROGRA~1\\PostgreSQL\\8.3\\bin\\";

String postgresCommand="psql -h localhost -U postgres -d postgres";

String autoVaccum="-c \"vacuum verbose\"";

String []actualCmd={cmd1,location,postgresCommand,autoVaccum};

Process process=null;

try {

process = Runtime.getRuntime().exec(actualCmd);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

MyTest test= new MyTest();

test.executeCommand();

}但我得到了异常

java.io.IOException: Cannot run program "cmd.exe /c start": CreateProcess error=2, The system cannot find the file specified

at java.lang.ProcessBuilder.start(Unknown Source)

at java.lang.Runtime.exec(Unknown Source)

at java.lang.Runtime.exec(Unknown Source)

at MyTest.executeCommand(MyTest.java:36)

at MyTest.main(MyTest.java:48)

Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified

at java.lang.ProcessImpl.create(Native Method)

at java.lang.ProcessImpl.(Unknown Source)

at java.lang.ProcessImpl.start(Unknown Source)

... 5 more当我直接在Start-> Run窗口中直接输入上面的字符串时,它会成功执行

例如。

cmd.exe / C start C:\ PROGRA~1 / PostgreSQL / 8.3 / bin / psql -h localhost -U postgres -d postgres -c“vacuum verbose”

任何人都可以知道上述程序中究竟发生了什么问题吗?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个Java程序出现的错误,错误信息为“createprocess error=2,系统不到指定文件”。这通常是因为程序尝试执行一个不存在的文件或路径,导致无法创建进程。可能需要检查程序中的文件路径或文件名是否正确,或者检查系统中是否存在所需的文件。 ### 回答2: 在Java开发中,我们有时会遇到这样的异常:caused by: java.io.ioexception: createprocess error=2,系统不到指定文件。这是由于Java系统在创建一个新的进程时,不到指定的可执行文件,从而抛出的异常。 造成这个异常的最常见的原因是路径错误。当我们在处理输入、输出等操作时,需要指定正确的文件路径。如果文件路径不存在,那么Java就会抛出这个异常。另一个可能原因是消息提示中已经明确出的,也就是指定文件不存在。在这种情况下,我们需要检查一下文件是否存在,如果不存在,需要重新编写路径或创建需要的文件。 为了避免这个问题,我们需要写出可靠的代码并遵循以下最佳实践: 1.正确编写文件路径,确保所有文件都能够被到。 2.程序执行期间不要删除或移动文件,避免不到文件。 3.注意检查错误日志,尽可能确定出错的原因并进行调整。 4.确保文件Java程序中可以正确地打开和关闭。 在开发中遇到这种异常的时候,需要及时到问题并修复。通过注意细节,合理编写代码并严格执行上述最佳实践,我们可以避免这类异常并提高代码的可靠性和健壮性。 ### 回答3: 这个错误是Java程序在执行调用系统命令时出现的错误。具体地说,是因为Java程序调用了一个不存在或者无法到的文件,然后导致系统无法创建这个命令。 Java程序可以通过ProcessBuilder或Runtime.getRuntime().exec()方法来执行系统命令。当程序运行到exec()方法时,会创建一个子进程来执行系统命令,然后将子进程的输入和输出管道与Java程序的输入和输出连接起来。 如果在调用运行系统命令时,Java程序无法指定文件,例如指定文件不存在,或者程序没有权限访问该文件等,则会抛出上述异常。 解决这个问题的方法有很多,其中一种方法是检查Java程序的路径和文件名是否正确。另外,还可以通过设置环境变量来解决该问题。还有一种方法是使用绝对路径来调用系统命令,这样可以避免出现不到指定文件的错误。 总之,这个异常的出现是由于Java程序无法指定文件,需要我们检查Java程序的路径和文件名是否正确,或通过设置环境变量或使用绝对路径来避免该问题的出现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值