从java运行pmcmd

从java运行pmcmd,java,informatica,informatica-powercenter,Java,Informatica,Informatica Powercenter,我正在尝试运行pmcmd并从java传递参数。这是我的代码: String cmd="C:\\Informatica\\9.6.1\\clients\\PowerCenterClient\\CommandLineUtilities\\PC\\server\\bin\\pmcmd.exe"; final Process cmdProcess; cmdProcess = Runtime.getRuntime().exec(new String[]{cmd,"connect -sv

我正在尝试运行pmcmd并从java传递参数。这是我的代码:

String cmd="C:\\Informatica\\9.6.1\\clients\\PowerCenterClient\\CommandLineUtilities\\PC\\server\\bin\\pmcmd.exe";
    final Process cmdProcess;

    cmdProcess = Runtime.getRuntime().exec(new String[]{cmd,"connect -sv IS_NAME -d DOMAIN_NAME -u USER -p PWD"});
    cmdProcess.getOutputStream().close();
问题是我无法获得所需的输出。我得到以下错误:

ERROR: Unknown command [connect]
当我在命令行上尝试相同的命令时,它会起作用

pmcmd>connect -sv IS_NAME -d DOMAIN_NAME -u USER -p PWD
输出:

Connected to Integration Service:[IS_NAME].
有人能告诉我我犯了什么错误吗?

pmcmd有两种工作模式,命令行和交互。“连接”命令仅在交互模式下工作

从java调用时,您使用的是命令行模式,不需要先连接。您可以直接调用要运行ex.startWorkflow的命令,并使用该命令提供连接参数,如下所示:

pmcmd startworkflow -sv MyIntService -d MyDomain -u seller3 -p jackson ‑f SalesEast wf_SalesAvg

更多细节。

我必须在pmcmd进程中发出一个命令。所以我修改了我的代码,它可以工作:

                String cmd="C:\\Informatica\\9.6.1\\clients\\PowerCenterClient\\CommandLineUtilities\\PC\\server\\bin\\pmcmd.exe";
                final Process cmdProcess;

                cmdProcess = Runtime.getRuntime().exec(new String[]{cmd,""});
                OutputStream out = cmdProcess.getOutputStream();
                out.write("connect  -sv IS_NAME -d DOMAIN_NAME -u USER -p PWD".getBytes());
                out.close;

添加我的评论作为回答,在它根据OP工作之后


您的命令行示例建议connect-sv。。。在pmcmd进程中发出,而不是作为参数提供


因此,您可能应该将其发送到由cmdProcess.getOutputStream访问的进程的STDIN,而不是作为参数传递给调用。

您的命令行示例建议connect-sv。。。在pmcmd进程中发出,而不是作为参数提供。因此,您可能应该将其发送到由cmdProcess.getOutputStream访问的进程STDIN,而不是作为参数传递给调用。您好,Cello,它按照您建议的方式工作。谢谢: