0

最近我遇到了代码编译的奇怪问题 - 相同的代码在我的开发机器上运行良好(编译),但在 jenkins 上失败。

我的开发机器配置:

  • win7_64
  • 太阳jdk6 _64

詹金斯配置:

  • ubuntu x86
  • sun jdk6 x86 - 当前设置为 JAVA_HOME(openjdk6 安装在 sun 旁边的系统中)

两者都使用 sbt 0.11.2 和 scala 2.9.1

导致问题的代码与 AWS Transcoder 服务相关。

val result = new CreateJobRequest()    
result.setInput(input.asAWSJobInput)    
result.setOutputs(outputs.map(_.asAWSJobOutput))      
result.setPipelineId(pipelineId)
  • CreateJobRequest 是来自 com.amazonaws.services.elastictranscoder.model 包的 CreateJobRequest
  • asAWSJobInput 将 scala 类映射到上述包中的 JobInput
  • asAWSJobOutput 将 scala 类映射到上述包中的 CreateJobOutput
  • 我也在这里使用了 collection.JavaConversions._(在 setOutputs 中转换为 java 集合)。

这在本地编译得很好,并在 jenkins 上返回:

值 setOutputs 不是 com.amazonaws.services.elastictranscoder.model.CreateJobRequest 的成员

我尝试了一些方法,例如显式调用转换或将 setOutputs 参数提取到 val 中。我也尝试过使用 withOutputs - jenkins 上的类似结果。我还尝试过使用 setOutput(CreateJobOutput) 在两台机器上都可以正常工作。

这似乎是与环境相关的问题,但我现在不知道是什么原因造成的。任何帮助是极大的赞赏。

最好的问候, 阿雷克

4

2 回答 2

0

我想通了,这是与 java 有关的问题-在较新的 jdk 上运行良好。@Stephen C 谢谢你的建议

于 2013-06-25T12:21:21.000 回答
0

根据1.3.32版本的源代码,setOutputs不是CreateJobRequest. 但是,它存在于 Maven Central 的最新版本 - 1.4.6 的类中。

您很可能在本地和 Jenkins 服务器上与不同版本的 AWS API 进行比较。

于 2013-06-17T12:52:15.090 回答