首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java ProcessBuilder

Java ProcessBuilder
EN

Stack Overflow用户
提问于 2012-05-13 10:19:57
回答 2查看 3.2K关注 0票数 1

我在项目中使用ProcessBuilder运行类时遇到了问题。我的代码:

代码语言:javascript
运行
复制
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 Program位于相同的项目中(相同的bin文件夹),如果直接运行则工作正常,但这样我会得到错误消息“找不到主类: Program”。我的代码中的错误在哪里?

提前谢谢。

我得出的结论是,我的Program类上的一些代码给出了错误。Basicly仅与"clean“main一起运行。在eclipse中,Program类正在导入jar文件中的一些库。我不需要在ProcessBuilder中引用它吗?如果是这样的话,是怎么做的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-13 11:16:01

响应您的编辑:

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

票数 2
EN

Stack Overflow用户

发布于 2012-05-13 10:26:24

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

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10568840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档