Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当Scala失败时,Jenkins报告成功_Java_Scala_Jenkins - Fatal编程技术网

Java 当Scala失败时,Jenkins报告成功

Java 当Scala失败时,Jenkins报告成功,java,scala,jenkins,Java,Scala,Jenkins,我刚刚和詹金斯一起做了实验,并建立了一些项目。其中一个调用shell脚本,并从该脚本中正确提取退出代码,生成通过/失败。然而,当我从命令行调用Scala时,无论发生什么情况,它都会通过 在“执行外壳程序”框中: /opt/scala/2.9.1/bin/scala sdfsdfsd Exception in thread "main" java.lang.RuntimeException: Cannot figure out how to run target: sdfsdfsd ... (s

我刚刚和詹金斯一起做了实验,并建立了一些项目。其中一个调用shell脚本,并从该脚本中正确提取退出代码,生成通过/失败。然而,当我从命令行调用Scala时,无论发生什么情况,它都会通过

在“执行外壳程序”框中:

/opt/scala/2.9.1/bin/scala sdfsdfsd
Exception in thread "main" java.lang.RuntimeException: 
Cannot figure out how to run target: sdfsdfsd
... (stack trace removed)
Finished: SUCCESS
但是,使用Java进行等效操作会导致失败:

/opt/java/jdk1.7.0/bin/java sdfdfsd
Error: Could not find or load main class sdfdfsd
Finished: FAILURE
当从bash运行时(使用echo$?),这两种方法都会产生一个退出代码1

我是遗漏了什么还是这是一个错误

编辑:

有趣的是,我在使用ant exec时看到了相同的行为——当我调用包含对scala无效调用的shell脚本时,我得到了预期的错误代码,但是通过ant(failonerror='true')我看到零,并且构建成功

谢谢

这是一个已知的bug,已在trunk中修复

要修补您的系统,修复非常简单,在$SCALA_HOME/bin/SCALA脚本第25ish行

function onExit() {
  if [[ "$saved_stty" != "" ]]; then
    restoreSttySettings
    exit $scala_exit_status
  fi
}
如果出现以下情况,请将出口移到外部:

function onExit() {
  if [[ "$saved_stty" != "" ]]; then
    restoreSttySettings
  fi
  exit $scala_exit_status
}

这将解决您的问题(实际上在ant中也是如此,但您必须对scalac执行相同的操作)。

这些“…”是否表示正在执行其他命令?如果我没有完全误导,詹金斯只会拾取最后一个命令的退出代码,所以如果你的脚本中有另一个命令在Scala失败后执行,并且这个命令成功了,詹金斯仍然会认为这是成功的。这只是java/scala的附加堆栈跟踪/其他输出。您在Jenkins中的脚本中尝试过“echo$?”吗?如果你在bash和Jenkins身上做这件事可能会有所不同。此外,您可能还想尝试类似“if$?=”的内容1退出1'(是的,我试过了,bash打印了1(即失败),jenkins打印了0。但我不明白为什么?我想我只会使用ant exec,但似乎有些过火:)是的,这似乎有些过火;-)您可以尝试在jenkins脚本中加载bash,看看这是否会改变什么。除此之外,我还没有什么想法,对不起,你偶然发现了一些奇怪的东西;-)