Java,用Runtime.exec()继承类路径

Kav*_*vin 2 java

我有一个程序将创建一个子进程,我希望它继承其父进程的所有类路径。在 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)

我可以看到路径信息,但是这些路径信息不会被新创建的进程继承。

yka*_*ich 5

您如何指定应用程序的类路径?如果不是通过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)