从 java 代码调用可执行文件

Calling an executable from java code

我正在尝试 运行 一个可执行文件,其参数来自 java 代码。在控制台中,当我希望 运行 我的 exe 时,我写:>colorDescriptor 1.jpg --detector densesampling --ds_spacing 6 --ds_scales 1.2 --descriptor opponentsift --codebook CODEBOOK --output output.descr。当我尝试 运行 来自 java 的可执行文件时,我正在使用以下代码:

    String[] cmd = { "colorDescriptor.exe" , "1.jpg", " --detector densesampling --ds_spacing 6 --ds_scales 1.2 --descriptor opponentsift --codebook CODEBOOK  ", "  --output output.descr"};
    Process process = Runtime.getRuntime().exec(cmd);        
    waitF(process);

然而它似乎无法正常工作,我遇到了以下问题:Warning: no output file to write to. Did you forget to specify --output?我调用 .exe 时是否做错了什么?

每个参数都应该是 String[] cmd 中的一个单独的 String; 例如:

String[] cmd = { "colorDescriptor.exe" , "1.jpg", "--detector", "densesampling", "--ds_spacing", "6", "--ds_scales", "1.2", "--descriptor", "opponentsift", "--codebook", "CODEBOOK", "--output", "output.descr"};

您必须以单个字符串或包含多个字符串的字符串数组的形式提供命令,然后在 try-catch 块中换行,因为 exec(...) 会抛出异常

Throws:
SecurityException - If a security manager exists and its checkExec method doesn't allow creation of the subprocess
IOException - If an I/O error occurs
NullPointerException - If command is null
IllegalArgumentException - If command is empty