gpt4 book ai didi

java - 如何设置Java ProcessBuilder参数来运行外部.java文件?

转载 作者:行者123 更新时间:2023-12-02 11:57:38 24 4
gpt4 key购买 nike

我正在尝试使用 ProcessBuilder 类运行其他 java 文件。

我想获取java文件的整个路径+文件名+.java的输入并编译它。

示例,输入:C:\Windows\test.java

然后,我将输入存储到 String 变量 FILE_LOCATION 中,并调用 processbuilder 来编译输入 .java 文件.

这是我的代码:

 static String JAVA_FILE_LOCATION;
static String command[] = {"javac", JAVA_FILE_LOCATION};
ProcessBuilder processBuilder = new ProcessBuilder(command);
Process process = processBuilder.start();
process = new ProcessBuilder(new String[]{"java","-cp",A,B}).start();

但我不知道如何设置参数。

process = new ProcessBuilder(new String[]{
"java","-cp",A,B}).start();

我应该如何设置该参数(A, B)

最佳答案

为了回答您的确切问题,例如,您的类位于包 com.yourcompany.yourproduct 中,您的类文件位于 /dir/to/your/classes/中com/yourcompany/yourproduct/Yourclass.c‌​class.

然后A =“/dir/to/your/classes”B =“com.yourcompany.yourproduct.Yourclass”

但是,有一些事情需要注意。查看您的代码:

static String JAVA_FILE_LOCATION;
static String command[] = {"javac", JAVA_FILE_LOCATION};
ProcessBuilder processBuilder = new ProcessBuilder(command);

没有。您需要 CD 到该目录并然后运行javac。最简单的方法是调用 processBuilder.directory(new File("/dir/to/your/classes"))。然后,您需要为 javac 提供源文件的相对路径 ("com/yourcompany/yourproduct/Yourclass.java")。

Process process = processBuilder.start();
process = new ProcessBuilder(new String[]{"java","-cp",A,B}).start();

请等到第一个进程完成编译后再尝试运行它!在上面两行之间插入process.waitFor();。您可能还想检查是否有任何错误,并且仅在第一个进程成功时才运行第二个进程。

顺便说一句,不需要长时间手动创建字符串数组。只需使用可变参数:process = new ProcessBuilder("java", "-cp", A, B).start();

关于java - 如何设置Java ProcessBuilder参数来运行外部.java文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com