views:

62

answers:

3

I installed m2eclipse to build a java project in Eclipse.

I imported the project as follows:

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

To be sure m2eclipse was actually building the project, I deleted the target directory and made sure it was re-created by m2eclipse and it was. But unlike with the command-line version of maven which built everything perfectly, m2eclipse leaves a large number of build errors in the source code.

Is it possible that I did not configure m2eclipse properly? How would I check this?

This is a github link to the project I'm trying to build. I'm getting the @Override build errors at this line. It says "The method createNewToken must override a superclass method".

+1  A: 

Update: The problem is the same as the one described in ‘Must Override a Superclass Method’ Errors after importing a project into Eclipse and here is what the accepted answer says:

Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 can be annotated with @Override, but in Java 1.5 can only be applied to methods overriding a superclass method).

Changing the compiler level to Java 1.6 would make the problem go away. To do so, modify the compiler plugin configuration:

<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>

And update the project configuration (right-click on the project then Maven V Update Project Configuration) does solve the problem under Eclipse.

Or stick with 1.5 but remove the problematic @Override annotations.

I don't know how Taylor got things working with a Java 1.5 compiler level. And my guess is that the project wouldn't build on the command line with a JDK 5.


But unlike with the command-line version of maven which built everything perfectly, m2eclipse leaves a large number of build errors in the source code.

Hard to say what is happening exactly without seeing those "errors" (are them really errors?). Please provide some traces.

Is it possible that I did not configure m2eclipse properly? How would I check this?

One difference is that m2eclipse uses by default a embedded version of Maven 3 which is probably not the same version that you use on the command line. You can change that through Window V Preferences V Maven V Installation (and add your own installation):

alt text

But while I would recommend to use the same version under Eclipse than on the command line, this is very likely not the root cause of the problem, Maven 2 builds should run on Maven 3 without problems.

Pascal Thivent
I tried switching to the maven2 installation but, as you suspected, it had no effect on the build errors. But thanks for the screenshot. I didn't know it was so easy to switch the installation from the default.
Chris Collins
It seems Raoul is experiencing the exact same problems with this code. I assumed it was just something I was doing.
Chris Collins
Nope, doesn't work for me.
Raoul Duke
@Raoul Please double check your claims because it does work for me and I'm 200% sure of what I'm saying.
Pascal Thivent
It works perfectly now. Some of the "Content Assist" problems I was having earlier have also been eliminated.
Chris Collins
+1  A: 

I checked out the code. I have exactly the same problem. The code seems to be just broken.

Edit: It definitely is. Look at the class com.jappstart.service.auth.UserDetailsServiceImpl. It wants to override the method public final UserDetails loadUserByUsername(final String username) but this method doesn't exist in the interface the class implements and is has no superclass.

Edit: Ok, that doesn't explain why it builds with maven standalone. This also works for me. Very strange. It seems that there is something going on with the build that doesn't work with m2eclipse.

Edit: I'm pretty sure the code works because the bytecode is modified by the datanucleus plugin. When I run the project as maven build (right-click->Run->maven package) it sucessfully creates the war with m2eclipse. So my guess is that the problem is with the m2eclipse Maven Builder.

Raoul Duke
Thanks for checking out the code. I'm glad you were able to verify that it works with maven standalone but not with m2eclipse. But, based on Pascal's advice, I have set m2eclipse to use my standalone maven installation. So this makes it all the more mysterious why there would be a difference.
Chris Collins
I suspect it has to do with the datanucleus plugin. This plugin appears to do some bytecode manipulation which could explain that the "broken" code can be compiled. I don't understand however why it doesn't seem work with m2eclipse.
Raoul Duke
+1  A: 

The override errors will appear if eclipse is configured to use java 1.5 instead of 1.6. Check the project properties.

Taylor Leese
@Chris Did you read my answer Chris? I provided the *right* solution (configuring the `maven-compiler-plugin` for 1.6 **IN** the pom.xml). This is the way to go, m2eclipse derives the settings from the pom.xml. And this what Taylor should do, one shouldn't have to change the IDE settings after import.
Pascal Thivent
Sure, I will change the POM to list 1.6 when I get a chance (probably tomorrow evening). My Eclipse project settings were at 1.6 so I never noticed this.
Taylor Leese