我被一个问题困扰着,它与 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 等环境变量。因此,只要系统启动,它就会加载。
创建新流程是否存在授权问题?尽管我们已经仔细检查过了。
任何指点都将非常感激。