繁体   English   中英

如何在其他 Java 程序中使用 ProcessBuilder 运行 Java 程序。 (使用 -cp 和 -Xbootclasspath 命令)

[英]How to run a Java program using ProcessBuilder inside the other Java program. (with -cp and -Xbootclasspath commands)

这是我的代码。

public class Test {
    public static void main(String[] args) {
        String directory = System.getProperty("user.home") + File.separator + "cache";
        System.out.println(directory); // "/Users/byron1st/cache"
        try{
            ProcessBuilder builder = new ProcessBuilder("java",
                    "-cp", directory,
                    "-Xbootclasspath/p:", directory,
                    "framework.PFSystemMain");
            builder.redirectErrorStream(true);
            builder.redirectOutput(new File(System.getProperty("user.home") + "/output.txt"));
            builder.start();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

该程序使用 -cp 和 -Xbootclasspath 命令构建运行 java 程序的进程。 目标程序的类位于/Users/byron1st/cache文件夹中。

在此处输入图片说明

我想要做的是运行java -cp /Users/byron1st/cache -Xbootclasspath/p: /Users/byron1st/cache framework.PFSystemMain

(我使用Xbootclasspath/p:的原因是我有一些检测类要记录。)

此代码无法运行该进程,只会产生一条错误消息,意思是“它无法找到或加载名为 '.Users.byron1st.cache' 的默认类”。 (很抱歉直接显示错误信息,因为它是用韩语写的。)

我使用 ProcessBuilder 的代码有什么问题?

我解决了这个问题。 这是因为' Xbootclasspath/p: '。 我改变了我的代码如下:

ProcessBuilder builder = new ProcessBuilder("java",
                "-cp", directory,
                "-Xbootclasspath/p:" + directory,
                "framework.PFSystemMain");

事实上,我认为 -Xbootclasspath/p: 及其目录路径是 processbuilder 的单独参数,但事实并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM