Runtime.getRuntime()。exec(command)不执行任何操作

时间:2019-12-15 16:05:06

标签: java debugging xpages lotus-domino runtime.exec

在我的XPages应用程序中,我必须调用curl命令

代码很简单:

public static InputStream executeCurlCommand(String finalCurlCommand) throws IOException
{
    return Runtime.getRuntime().exec(finalCurlCommand).getInputStream();
}

但是,该命令似乎根本没有执行。

当我执行以下命令时(在Linux终端中):

curl -k -i -X GET https://someHost/fws/api/esia/login?redirectUrl=https://redirectHost/sed/gecho/2019/gecho_apps_2019.nsf/Nav2.xsp

我得到了输出。

但是,每当我用Java执行它时,都不会起作用。 getInputStream()为空。

同时,如果我在本地Windows计算机上执行此代码,一切都很好。从cmd执行的命令也是如此。

但是在XPages中,没有例外,没有错误,只是一无所有。

是否有调试方法?

UPD

如果我将命令更改为与ls -la一样简单的命令,则一切正常:x

1 个答案:

答案 0 :(得分:1)

好的,伙计们,我知道了。问题是我将完整的命令传递给了shell。在UNUX中不起作用。

所以

您永远不要使用

public static InputStream executeCurlCommand(String finalCurlCommand) throws IOException
{
    return Runtime.getRuntime().exec(finalCurlCommand).getInputStream();
}

在UNIX系统中。请改用ProcessBuilder

例如:

ProcessBuilder pb = new ProcessBuilder(
"curl",
"-k",
"-i",
"-X",
"GET",
"http://host.com");
pb.redirectErrorStream(true);
Process p = pb.start();
InputStream is = p.getInputStream();