使用AWS Java SDK的Scala - 在本地编译但不在jenkins上编译

时间:2013-06-17 12:29:56

标签: java scala amazon-web-services

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

我的开发机器配置:

  • win7 _64
  • sun jdk6 _64

Jenkins配置:

  • 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上返回:

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

我尝试了一些事情,比如明确调用转换或将setOutputs param提取到val中。我也试过使用withOutputs - 在jenkins上有类似的结果。 我也尝试过使用setOutput(CreateJobOutput),它在两台机器上运行良好。

这似乎与环境有关,但我现在不知道是什么原因引起的。 非常感谢任何帮助。

最诚挚的问候, Arek

2 个答案:

答案 0 :(得分:0)

根据源代码的the 1.3.32 versionsetOutputs不是CreateJobRequest的成员。但是,它出现在Maven Central的最新版本中 - 1.4.6。

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

答案 1 :(得分:0)

我想通了,这是与java连接的问题 - 它在新的jdk上运行良好。 @Stephen C感谢您的建议