9

我安装了 m2eclipse 以在 Eclipse 中构建一个 java 项目。

我按如下方式导入项目:

Import->
Maven->
Existing Maven Projects->
Import Maven Projects->
- Select root directory
- Select pom file
- Click Finish

为了确保 m2eclipse 确实在构建项目,我删除了目标目录并确保它是由 m2eclipse 重新创建的。但与完美构建一切的命令行版本的 maven 不同,m2eclipse 在源代码中留下了大量构建错误。

是否有可能我没有正确配置 m2eclipse?我将如何检查这个?

这是我正在尝试构建的项目的 github 链接。我在这一行收到@Override 构建错误。它说“方法 createNewToken 必须覆盖超类方法”。

4

3 回答 3

13

更新:问题与将项目导入 Eclipse 后的“必须覆盖超类方法”错误中描述的问题相同,这是公认的答案:

Eclipse 默认使用 Java 1.5,并且您有实现接口方法的类(在 Java 1.6 中可以使用 @Override 注释,但在 Java 1.5 中只能应用于覆盖超类方法的方法)。

将编译器级别更改为 Java 1.6 将使问题消失。为此,请修改编译器插件配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.1</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
  </configuration>
</plugin>

并更新项目配置(右键单击项目然后Maven V 更新项目配置)确实解决了 Eclipse 下的问题。

或者坚持使用 1.5 但删除有问题的 @Override 注释。

我不知道 Taylor 是如何使用 Java 1.5 编译器级别的。我的猜测是,该项目不会使用 JDK 5 在命令行上构建。


但与完美构建一切的命令行版本的 maven 不同,m2eclipse 在源代码中留下了大量构建错误。

如果没有看到那些“错误”(它们真的是错误吗?),很难说到底发生了什么。请提供一些痕迹。

是否有可能我没有正确配置 m2eclipse?我将如何检查这个?

一个区别是 m2eclipse 默认使用嵌入式版本的 Maven 3,这可能与您在命令行上使用的版本不同。您可以通过Window V Preferences V Maven V Installation更改它(并添加您自己的安装):

替代文字

但是虽然我建议在 Eclipse 下使用与命令行相同的版本,但这很可能不是问题的根本原因,Maven 2 构建应该在 Maven 3 上运行而没有问题。

于 2010-08-21T19:25:32.253 回答
1

我检查了代码。我有完全一样的问题。代码似乎刚刚被破坏。

编辑:绝对是。查看 com.jappstart.service.auth.UserDetailsS​​erviceImpl 类。它想要覆盖该方法public final UserDetails loadUserByUsername(final String username),但该方法在该类实现的接口中不存在,并且没有超类。

编辑:好的,这并不能解释为什么它使用 Maven 独立构建。这也适用于我。很奇怪。似乎构建过程中发生了一些不适用于 m2eclipse 的事情。

编辑:我很确定代码可以工作,因为字节码是由 datanucleus 插件修改的。当我将项目作为 maven build 运行(右键单击->运行-> maven 包)时,它成功地使用 m2eclipse 创建了战争。所以我的猜测是问题出在 m2eclipse Maven Builder 上。

于 2010-08-21T19:56:59.723 回答
1

如果将 eclipse 配置为使用 java 1.5 而不是 1.6,则会出现覆盖错误。检查项目属性。

于 2010-08-21T21:02:53.237 回答