views:

1280

answers:

3

The eclipse 'problems' tab is displaying this error:

Description Resource    Path    Location    Type
Java compiler level does not match the version of the installed Java project facet. groupping       Unknown Faceted Project Problem (Java Version Mismatch)

I am using eclipse, my pom.xml has this setting:

<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>          
                <configuration>

                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>

Where else could the settings be mismatched?

+3  A: 

Did you check your Project Properties -> Project Facets panel? (From that post)

A WTP project is composed of multiple units of functionality (known as facets).

The Java facet version needs to always match the java compiler compliance level.
The best way to change java level is to use the Project Facets properties panel as that will update both places at the same time.

alt text

The "Project->Preferences->Project Facets" stores its configuration in this file, "org.eclipse.wst.common.project.facet.core.xml", under the ".settings" directory.

The content might look like this

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <runtime name="WebSphere Application Server v6.1"/>
  <fixed facet="jst.java"/>
  <fixed facet="jst.web"/>
  <installed facet="jst.java" version="5.0"/>
  <installed facet="jst.web" version="2.4"/>
  <installed facet="jsf.ibm" version="7.0"/>
  <installed facet="jsf.base" version="7.0"/>
  <installed facet="web.jstl" version="1.1"/>
</faceted-project>

Check also your Java compliance level:

alt text

VonC
+2  A: 

You have two options to fix the issue:

1- Manually make sure the two versions match.
2- Use the IDE's help as follows:
- Right mouse click on the error in the 'Problems' view
- Select the 'Quick Fix' menu item from the pop-up menu
- Select the right compiler level in the provided dialog and click 'Finish'.

Taken from Eclipse: Java compiler level and project facet mismatch

Also gives location of where you can access the Java compiler and facet version.

Anthony Forloney
+3  A: 

The project facets should be derived automagically by the M2Eclipse plugin from the POM configuration. If you make some changes to the POM and need Eclipse to take them into account, right-click on your project, then go to Maven > Update Project Configuration. You should not set project facets manually.

Pascal Thivent
Interesting remark there. +1
VonC
@VonC You're of course right about the way to configure this manually but when using maven and the m2eclipse plugin, the plugin should - and actually does - configure this for you. All the required meta-data are in the POM: JDK level version, Servlet API, etc. Developers don't have to set this manually after an import or any other POM update, which is a good thing. This applies also to the maven-eclipse-plugin (that generates the facet based on the POM meta-data).
Pascal Thivent