繁体   English   中英

Java ProcessBuilder

[英]Java ProcessBuilder

我在使用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();
        }
    }
}

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

提前致谢。

[编辑]我得到的结论是我的Program类上的一些代码给出了错误。 基本上只运行“干净”主。 在eclipse中,Program类正在导入一些jar文件中的库。 我不需要在ProcessBuilder中引用它吗? 如果是这样,怎么样?

为了回应您的编辑:

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

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

(您正在启动javaw可执行文件,因此这不是问题。也不是您的入口点方法的签名不正确,因为这会给出不同的诊断。)

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


假设您已经消除了类名不正确的可能性,我的猜测是您正在尝试使用JAR文件的相对路径名,但是对于当前目录的内容存在一些混淆; 即需要解析路径名的目录。 尝试在classpath参数中使用绝对路径名。

暂无
暂无

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

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