我们正在定制maven中的网站生成,它所做的一件事就是调用Visio让它将一些图表转换为png。我们使用一个调用Visio的vbs脚本,通过调用Process proc = Runtime.getRuntime().exec(command);
从java类调用,其中命令为cmd /c "cd "C:\Path\To\Module\site\target\staging"&&exportVisioSvg.vbs "C:\Path\To\inFile.vsd" "C:\Path\To\outFile.png""
现在这段代码在我自己的机器上执行就好了。调用Visio并生成文件。当我在托管我们的Jenkins实例的服务器上运行它时,它也能正常工作。当我单独运行命令时它工作得很好。最后,当我转到Jenkins \工作区并执行maven构建时,它工作得很好。
然而,当我使用完全相同的命令(我复制并粘贴它)在jenkins中运行构建时,它不会生成Visio图表。其他所有东西都运行良好,并且在我们自己抛出的错误之外没有堆栈跟踪,当图像不在它应该的位置时,它会消失。进程的退出代码也是0,并且没有输出到进程生成的stdout或stderr(等效的windows),它必须完成或退出代码为-1。超时不是问题,因为它有50000毫秒的运行但总是在一秒或更短的时间内返回(你可以看到在调用脚本后立即抛出错误)。
我将Jenkins切换到安装了所有内容的管理员帐户下运行(从SYSTEM移动),以便它可以访问PATH。
我不知道该做什么。
答案 0 :(得分:1)
这听起来像詹金斯常见问题解答之一。请查看https://wiki.jenkins-ci.org/display/JENKINS/My+software+builds+on+my+computer+but+not+on+Jenkins,尤其是“桌面访问(Windows)”
部分答案 1 :(得分:0)
您可能正在点击http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6468220,因为它无法在JDK中修复,您需要在代码中对其进行微调。
答案 2 :(得分:0)
问题是当Visio启动时,它作为Jenkins服务的子项启动,该服务在没有桌面交互的情况下运行。 Microsoft限制其办公产品操作,其中可能会生成用户无法看到的提示。即使您添加允许与桌面交互也无法正常工作,在我的情况下返回以下错误值2032466051.解决方案是仅以用户身份运行它,并在每次需要重新启动服务器时手动启动Jenkins实例。