2017-04-04 1771 views
1

我正在使用Jenkins来安排我的硒/ java自动化测试(将测试脚本打包到.jar文件中)。Jenkins | “系统找不到指定的文件”

我创建了.bat文件来触发.jar文件,我打电话给Jenkins的.bat文件。

当我手动触发测试时,通过双击.bat文件,一切运行平稳。但是,当我尝试运行通过詹金斯一样,我收到以下错误每个测试案例:

“系统找不到指定文件”

詹金斯被成功调用.bat文件,因为我可以看到jenkins控制台上显示的测试用例名称(存在于.jar文件中)。

在我的java代码中,我已经使用.\来表示我的jar文件存在的“当前目录”以及数据驱动自动化框架的excel文件。即使.bat文件存在于相同的位置,并且我在.bat文件和jenkins上都给出了完全合格的路径。

我不能硬编码,将不得不在我的java代码中使用./。我正在Windows Server上运行(不是我的本地机器)。

+0

也许[this](http://stackoverflow.com/a/25440709/2861476)可能有所帮助。 –

+0

当你手动运行它时,你从哪个目录运行它?在运行'.bat'文件之前,你有没有试图让詹金斯换成同一个目录?我的猜测是这是一个工作目录问题,与其他文件不同,你的'.bat'或'.jar'文件。 – mrfreester

+0

@mrfreester - 我从C:/ Desktop/QA目录手动运行它,在jenkins中,在配置生成操作下,我选择了'windows bat文件'并给出了完整路径 - C:/ Desktop/QA/trigger。bat 此外,在bat文件中,我将PATH和CLASSPATH值分别设置为C:/ProgramFiles/java/jdk1.7和C:/ Desktop/QA目录。 –

回答

0

问题是与安装詹金斯。 devops工程师为我解决了这个问题。必须在其中安装Tomcat和jenkins。他说:“如果Jenkins作为UI安装,它不能打开另一个UI,因此我们应该在一个单独的服务器上安装.war文件,为jenkins创建单独的UI,并且我的应用程序UI(firefox)可以在本地” 。

0

确定放置.bat文件的当前目录路径,并将/ add添加到系统路径变量。一旦完成,然后让jenkin执行.bat文件。

+0

哪里可以找到路径变量?在詹金斯? 在bat文件中,我将PATH和CLASSPATH值分别设置为C:/ProgramFiles/java/jdk1.7和C:/ Desktop/QA目录。 C:/ Desktop/QA拥有我所有的文件,bat,jar,excel ... –

0

当你在Jenkins上运行时,这是一个与你的工作目录不同的问题。

最简单的修复程序: 执行Windows批处理命令,而不是您的构建步骤。在第一行中,将cd C:/Desktop/QA/更改为您的工作目录以匹配您在本地执行的操作。在你的第二行使用trigger.batC:\Desktop\QA\trigger.bat

更强大的修复程序: 在您的java代码中,当引用其他文件时,您正在使用.\。这基本上意味着当前目录,如果您位于不同的工作目录中,这不会成为您想要的目录。相反,您可以使用look at this question/answer,它显示如何引用.jar文件所在的目录而不是工作目录。总结这样做:

return new File(MyClass.class.getProtectionDomain().getCodeSource() 
    .getLocation().toURI().getPath()); 
+0

感谢您的帮助@ mrfreester。我遵循了一些为我工作的替代方案。 –

相关问题