我有一个程序将创建一个子进程,我希望它继承其父进程的所有类路径。在 javadoc 中,它说:
public Process exec(String[] cmdarray, String[] envp) 抛出 IOException
在指定环境的单独进程中执行指定的命令和参数。
给定一个字符串数组 cmdarray(表示命令行的标记)和一个字符串数组 envp(表示“环境”变量设置),此方法创建一个新进程,在其中执行指定的命令。
如果 envp 为 null,则子进程继承当前进程的环境设置。
当我将 envp 设置为 null 时,它没有继承任何内容。
这是代码:
System.out.print("Debug system path: "+System.getProperty("java.class.path"));
startTime();
Process proc = Runtime.getRuntime().exec(cmd,null);
Run Code Online (Sandbox Code Playgroud)
我可以看到路径信息,但是这些路径信息不会被新创建的进程继承。
您如何指定应用程序的类路径?如果不是通过CLASSPATH环境变量,则不会被继承。
Runtime.exec方法可以调用任何本地应用程序,这里的envp指的是系统环境,而不是你的java环境。
如果你想将你的类路径传递给子java进程,你可以显式地这样做:
String[] cmdarray = new String[] {
"java", "-classpath", System.getProperty("java.class.path"), "com.example.MyChildApp", "appParam"};
Process p = Runtime.getRuntime().exec(cmdarray);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4577 次 |
| 最近记录: |