【问题标题】:Compilation errors in Jenkins but not in EclipseJenkins 中的编译错误,但 Eclipse 中没有
【发布时间】:2012-06-14 12:22:24
【问题描述】:

我们正在 Eclipse Indigo 下编写 Java6 项目,目前我们在 Eclipse 下的开发环境和与 Jenkins 的集成环境之间存在一些编译差异。

  • 我们的 Eclipse 在 Windows 7 和 JDK 1.6.0_30 下运行。
  • Jenkins 在 Linux 下使用 JDK 1.6.0_31(也使用 1.6.0_24 版本进行了测试)。

事实上,我们在 Jenkins 上遇到了一些编译错误,例如:

  • both define … but with unrelated return types 当一个接口继承自两个声明相同方法的接口(具有不同但兼容的类型)时
  • no unique maximal instance exists for type variable B with upper bounds I,… 用于返回原始类型 B 而不是更具体的 B<C> 的某些方法。

这里的问题不是解决这个问题;通过对源代码进行一些更改,我们成功地编译了 Jenkins。

问题是:为什么 Jenkins 的编译方式与我们的 Eclipse 不同? 是否有一些神奇的参数赋予编译器或 JVM 可以产生如此大的差异?

【问题讨论】:

  • 你有什么样的詹金斯工作?马文?
  • 您如何构建您的项目?使用 Maven?
  • 嗯,你有 Maven build VS Eclipse full build VS Eclipse Incremental build。最好在本地尝试与 Jenkins 相同的构建。你也可能有类路径不一致。
  • 哎呀,我忘了说:是的,我们使用 Maven。

标签: java eclipse compilation jvm jenkins


【解决方案1】:

Eclipse 使用自己的编译器。在极少数情况下,Eclipse 编译器和 OpenJDK 编译器之间几乎没有区别。有关更多一般信息,另请参阅:

http://www.eclipse.org/jdt/core/

How does Eclipse compile classes with only a JRE?

编辑:

接口的编译错误可能与此 JDK 错误有关:http://bugs.sun.com/view_bug.do?bug_id=6908259

【讨论】:

  • 我不知道 Eclipse 有自己的 über 编译器,感谢您强调 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 2013-05-03
  • 2016-06-01
  • 1970-01-01
  • 2021-05-21
相关资源
最近更新 更多