的Java的ProcessBuilder(Java ProcessBuilder)

2019-10-16 16:36发布

我在使用的ProcessBuilder在我的项目中运行的一类问题。 我的代码:

public class Main {
    public static void main(String[] args) {
        try {
            String pathToJar = Main.class.getProtectionDomain().getCodeSource()
                    .getLocation().toURI().getPath();
            ArrayList<String> params = new ArrayList<String>();    
            params.add("javaw");
            params.add("-classpath");
            params.add(pathToJar);
            params.add("Program");
            ProcessBuilder pb = new ProcessBuilder(params);
            Process process = pb.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

类节目是在同一个项目中(同一bin文件夹),如果直接运行,但这样一来我得到的错误“找不到主类:程序”正常工作。 哪里是我的代码中的错误?

提前致谢。

[编辑]我来这是我的计划类给错误的一些代码的结论。 Basicly只能用“干净”的主要运行。 在Eclipse中,项目类进口一些库是一个jar文件中。 难道我需要引用它的ProcessBuilder? 如果是这样,怎么样?

Answer 1:

在回答您的编辑:

您可以通过切换添加当前路径params.add(pathToJar);params.add(System.getProperty("java.class.path").concat(";").concat(pathToJar))‌​;



Answer 2:

哪里是我的代码中的错误?

(您一起发动javaw可执行文件,所以这不是问题。它也不是你的入口点方法的签名是不正确的,因为这将给予不同的诊断。)

问题是,无论是类名是不正确(例如,如果要“come.pkg.Program”),或JAR文件的路径不正确。


假设你已经消除类名是不正确的可能性,我的猜测是,你要使用的JAR文件中的相对路径,但有一些混淆当前目录是什么; 即其中路径需要解决的目录。 试试在类路径参数中使用绝对路径。



文章来源: Java ProcessBuilder