7.7.1 Maven major.minor compile issue

Hi all,

When using JDK6 I am having issues compiling maven apps using Vaadin 7.7.1 due to the vaadin-maven-plugin. The documentation of 7.7.1 claims that it should still work on Java 6 however I am getting a major.minor error when trying to compile. Could it be that this version of the plugin was compiled on 7 or newer?

The error is
Caused by: org.apache.maven.plugin.PluginContainerException: An API incompatibility was encountered while executing com.vaadin:vaadin-maven-plugin:7.7.1:compile: java.lang.UnsupportedClassVersionError: com/vaadin/wscdn/client/WidgetSetRequest : Unsupported major.minor version 51.0

at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
... 20 more

Caused by: java.lang.UnsupportedClassVersionError: com/vaadin/wscdn/client/WidgetSetRequest : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:386)

Hi,

Looks like Vaadin is now pulling in a new dependency that is built with JDK 7. The wscdn dependency should only be needed if you use Vaadin CDN to compile the widgetset. If you don’t need that you could try removing that dependency from the pom.xml (or exclude it if it is a transitive dependency) and see if something breaks.

I can’t seem to find anywhere in our codebase any reference to wscdn. The only compiler I’ve found is

    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-client-compiler</artifactId>
                     
        <exclusions>
            <exclusion>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
            </exclusion>
            <exclusion>
                <artifactId>jetty</artifactId>
                <groupId>org.mortbay.jetty</groupId>
            </exclusion>
        </exclusions>
    </dependency>

However this compiler is version 7.4.2 yet the 7.7.1 plugin is still being pulled down. I don’t think this is the same compiler you’re talking about, I’ve also forced the maven-plugin to be 7.4.2 but even though it downloads that version it still uses 7.7.1.

Is this not a far larger problem in that the maven plugin for a version of Vaadin that supports Java 6 has been compiled in 7 anyway?

Same problem. After updating vaadin dependency from 7.5.10 to 7.7.2 compiling under jdk6 is failed due to the vaadin-maven-plugin.

[INFO]
 --- vaadin-maven-plugin:7.7.2:update-widgetset (default) @ vaadin7-themes ---
[WARNING]
 Error injecting: com.vaadin.integration.maven.UpdateWidgetsetMojo
java.lang.UnsupportedClassVersionError: com/vaadin/wscdn/client/WidgetSetRequest : Unsupported major.minor version 51.0

Full log:


https://travis-ci.org/indvd00m/vaadin7-themes/builds/162784009

Project URL:


https://github.com/indvd00m/vaadin7-themes

This an incredibly annoying issue, it’s currently breaking our ability to build a new app.

I have tried to remove the dependency or force the previous version but it doen’t seem to work and maven just downloads the new version.

Can anyone from Vaadin give a response on if they are going to recompile this plugin in JDK6?