Java 无法停止oracle 10g中的侦听器

Java 无法停止oracle 10g中的侦听器,java,linux,Java,Linux,当我停止侦听器时,收到以下错误消息 Linux的LSNRCTL:版本10.2.0.4.0-2012年6月1日12:21:31生产 版权c 1991年,2007年,Oracle。版权所有。 NL-00857:错误的0-1个需要停止的参数数 我正在使用以下命令停止侦听器 $ORACLE_HOME/bin/lsnrctl停止侦听器 当我通过命令提示符执行命令时,它工作了,但通过java它失败了 请帮我解决这个问题……我认为您的java cmdStr不正确;您不能在设置env变量然后调用lsnrctl的

当我停止侦听器时,收到以下错误消息

Linux的LSNRCTL:版本10.2.0.4.0-2012年6月1日12:21:31生产 版权c 1991年,2007年,Oracle。版权所有。 NL-00857:错误的0-1个需要停止的参数数

我正在使用以下命令停止侦听器

$ORACLE_HOME/bin/lsnrctl停止侦听器

当我通过命令提示符执行命令时,它工作了,但通过java它失败了


请帮我解决这个问题……

我认为您的java cmdStr不正确;您不能在设置env变量然后调用lsnrctl的命令之间留一个空格。您需要使用分号:

String cmdStr="env ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1;/u01/app/oracle/product/10.2.0/db_1/bin/lsnrctl stop LISTENER";
env是一个bash命令,因此不能从java执行它。您可以将其制作成一个简短的shell脚本并从java执行,也可以执行以下操作

String cmd = "/u01/app/oracle/product/10.2.0/db_1/bin/lsnrctl stop LISTENER";
String[] envp = "ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1";
Process proc = Runtime.getRuntime().exec(cmd, envp);
if (proc.waitFor() != 0) {
    throw new RuntimeException("exit value was nonzero");
}

添加代码如何从Java执行此操作。String cmdStr=env ORACLE_HOME=/u01/app/ORACLE/product/10.2.0/db_1/u01/app/ORACLE/product/10.2.0/db_1/bin/lsnrctl stop LISTENER;Process proc=Runtime.getRuntime.execcmdStr;我试过了,但还是有问题。It syas…环境:状态:权限被拒绝