最近我遇到了代码编译的奇怪问题 - 相同的代码在我的开发机器上运行良好(编译),但在 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) 在两台机器上都可以正常工作。
这似乎是与环境相关的问题,但我现在不知道是什么原因造成的。任何帮助是极大的赞赏。
最好的问候, 阿雷克