首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与m2Eclipse和Maven不兼容的Eclipse构建器

与m2Eclipse和Maven不兼容的Eclipse构建器
EN

Stack Overflow用户
提问于 2011-09-22 16:59:33
回答 2查看 807关注 0票数 2

我看到一个问题,Maven构建的给定源文件生成的类文件与Eclipse生成的类文件不同。

Eclipse构建器正在优化以下方法:

代码语言:javascript
复制
public SomeClass clone() {
    SomeClass clone = (SomeClass) super.clone();
    return clone;
}

这个方法显然是不必要的,但是我不能选择更改源,因为它是生成的。

Eclipse使用哪个构建器来编译这些类?我使用的是m2Eclipse插件,我认为它只是调用Maven来执行构建。为什么Eclipse会认为它需要使用不同的构建器执行另一个构建呢?我可以禁用此Eclipse构建器或配置它以防止优化吗?

  • 月食版本: 3.7
  • m2Eclipse版本: 1.0.100.20110804-1717 (配置为使用外部Maven)
  • Maven版本: 2.2.1

更新

我找到了一个描述正在发生的事情的Eclipse错误报告。澄清一下,实际上并不是Eclipse编译器移除任何东西,它只是没有引入标准JDK编译器引入的合成的“bridge”方法。错误报告被标记为“解决-不会修复”。

在Maven构建器运行之后,我仍然没有找到阻止Eclipse构建器运行的方法。但我们的解决方法是修改代码生成器,将显式serialVersionUID添加到生成的代码中。

EN

回答 2

Stack Overflow用户

发布于 2011-09-23 06:20:09

如果为项目配置了Java Builder,则可以尝试禁用该项目。您可以通过单击Project -> Properties中的->选项卡来检查此选项卡。

来自Eclipse的帮助..。

Java构建器使用自己的编译器()构建Java程序,实现Java语言规范。

票数 1
EN

Stack Overflow用户

发布于 2011-09-23 08:14:05

我没有Eclipse3.7,但我预计从3.6开始这些事情没有改变。如果您在项目中打开属性->生成器,您应该会看到Maven Builder是最后一个,或者至少是在Java之后。这意味着当Maven Builder看到您的Java源文件时,它们已经被编译了。顺便说一句,您配置的外部Maven仅在以->形式运行时才使用,而不是在使用Maven构建时使用。

这就是说,您所看到的可能是这样一个事实:当您在Eclipse中编译时,使用内部Java编译器,而在命令行运行Maven时,我希望使用JDK编译器,这取决于您安装了什么。我不认为你能做什么来改变这种状况。您可以尝试的一件事是确保它们的行为尽可能接近,在POM中通过添加以下内容来指定要遵从哪个Java版本

代码语言:javascript
复制
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
</plugin>

到你的建筑区。

我不得不说,我希望Java编译器不允许从类中删除公共方法,即使它们是无用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7518607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档