Runtime.getRuntime().exec(String) 无法创建新进程 | Java + LINUX

Runtime.getRuntime().exec(String) 无法创建新进程 | Java + LINUX

我被一个问题困扰着,它与 Runtime.getRuntime().exec(String) 的失败有关,该问题在我们的应用程序中创建新的进程。虽然此代码在 sun 系统(java 1.4、tomcat 4.0)上成功运行,但它似乎在 Linux 上根本不起作用。Linux 系统上的配置是

  • Linux:Fedora 10,Java版本:1.6,Tomcat版本:5.5

以下是将 TestProcess 类作为新进程运行的代码片段:

    process = Runtime.getRuntime().
               exec (new String[] {"/bin/sh","-c",
                 "java OcwCommon.OcwProcessController" + " " +action+ " " +Id);

“进程”变量不返回空值。而且新进程没有创建任何日志。因此我们假设它没有被执行。

我正在使用 fsuser 运行 tomcat,并在 /etc/profile 文件中添加了 classpath、path 等环境变量。因此,只要系统启动,它就会加载。

创建新流程是否存在授权问题?尽管我们已经仔细检查过了。

任何指点都将非常感激。

答案1

你为什么要运行两次?我认为这行应该如下

字符串[] cmd = "/bin/sh","-c", "java OcwCommon.OcwProcessController" + " " +action+ " " +Id;

进程 = 运行时.getRuntime().exec(cmd);

斯图尔特

答案2

查询已更新

我被一个问题困扰着,它与 Runtime.getRuntime().exec(String) 的失败有关,该问题在我们的应用程序中创建新的进程。虽然此代码在 sun 系统(java 1.4、tomcat 4.0)上成功运行,但它似乎在 Linux 上根本不起作用。Linux 系统上的配置是

  • Linux:Fedora 10,Java版本:1.6,Tomcat版本:5.5

以下是将 TestProcess 类作为新进程运行的代码片段:

process = Runtime.getRuntime().exec (new String[] {"/bin/sh","-c"
                "java OcwCommon.OcwProcessController" + " " +action+ " " +Id);

“进程”变量不返回空值。而且新进程没有创建任何日志。因此我们假设它没有被执行。

我正在使用 fsuser 运行 tomcat,并在 /etc/profile 文件中添加了 classpath、path 等环境变量。因此,只要系统启动,它就会加载。

创建新流程是否存在授权问题?尽管我们已经仔细检查过了。

任何指点都将非常感激。

相关内容