gpt4 book ai didi

java - Hudson 作业卡在 Runtime.exec

转载 作者:行者123 更新时间:2023-12-04 07:12:12 26 4
gpt4 key购买 nike

我通过 Tomcat 将 Hudson 作为 Windows 服务运行,不涉及从属设备。作业中的最后一个构建步骤是一个调用一些 Java 代码的批处理文件。该代码使用 PostgreSQL 的命令行工具 psql(通过 Runtime.exec())在本地机器上创建一个数据库,并最终对其运行一些测试。

作业将进行到这一点,然后无限期挂起而不开始创建数据库。如果我从命令行运行批处理文件,它可以完美运行。我不认为 http://hudson.gotdns.com/wiki/display/HUDSON/Spawning+processes+from+build适用,因为产生的进程甚至似乎都没有开始执行,但我是新手,所以如果我错了,请告诉我。

编辑@anjanb:
批处理文件的唯一目的是调用 Java 代码,唯一的用户输入是作为命令行参数传入的,我可以看到直接通过构建的控制台输出输入。

Process Explorer 显示 psql 正在启动,但它显然没有被执行,因为给出的第一个命令 psql 是创建一个新数据库,但这并没有发生。

编辑 2:我从 Hudson 用户邮件列表中获得了一些提示,我将在周一试用并报告。

编辑 3:Java 代码已经在使用输出流,我在开发代码时使用了那篇文章。我想不通是怎么回事,所以我正在重新开发代码以使用 JDBC 创建数据库,而不是依赖 psql 和 Runtime.exec()

最佳答案

你读过这个过程的输出吗?如果它产生的输出比操作系统缓冲区可以处理的多,则需要读取它...

此外,某些进程会等待输入完成。尝试在启动进程后调用 process.getInputStream().close() 。

也许这篇文章也很有趣。它被称为“当 Runtime.exec() 不会时”:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=2

关于java - Hudson 作业卡在 Runtime.exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/137972/

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