2017-09-13 8 views
2

Je suis en train de construire avec Maven 3.2.5 en utilisant le JDK 6 (dans Eclipse Luna, Java EE Edition), et je continue à obtenir l'erreur folowing:Maven construire avec JDK 6 échoue en raison de UnsupportedClassVersionError

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : 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:401) 
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:254) 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.getMainClass(Launcher.java:144) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:266) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 

Après des recherches, Maven télécharge plexus-classworlds-2.5.2-sources.jar, qui est compilé pour le JDK 7, et c'est la cause du problème. Maven 3.2.5 est censé fonctionner avec le JDK 6, donc je ne comprends pas ce qui se passe.

Voici le pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>fr.sacem.fwk</groupId> 
     <artifactId>frmwk-parent</artifactId> 
     <version>5.3.13</version> 
    </parent> 

    <artifactId>sacem-fwkweb</artifactId> 
    <packaging>jar</packaging> 
    <name>Sacem Framework Web</name> 
    <description>Socle technique de la Sacem</description> 

    <dependencies> 
      <!-- FwkCore --> 
     <dependency> 
      <groupId>fr.sacem.fwk</groupId> 
      <artifactId>sacem-fwkcore</artifactId> 
      <version>${project.version}</version> 
     </dependency> 

     <!-- Wesso --> 
     <dependency> 
      <groupId>fr.sacem.admap</groupId> 
      <artifactId>wesso-api</artifactId> 
      <version>3.5.0</version> 
     </dependency> 

     <!-- Apache Commons --> 
     <dependency> 
      <groupId>commons-beanutils</groupId> 
      <artifactId>commons-beanutils</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-digester</groupId> 
      <artifactId>commons-digester</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-fileupload</groupId> 
      <artifactId>commons-fileupload</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-jxpath</groupId> 
      <artifactId>commons-jxpath</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-net</groupId> 
      <artifactId>commons-net</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>commons-pool</groupId> 
      <artifactId>commons-pool</artifactId> 
     </dependency> 
     <!-- 
     <dependency> 
      <groupId>commons-resources</groupId> 
      <artifactId>commons-resources</artifactId> 
      <version>X.Y.Z</version> 
     </dependency> 
     --> 
     <dependency> 
      <groupId>commons-validator</groupId> 
      <artifactId>commons-validator</artifactId> 
     </dependency> 


     <!-- Gestion des Logs --> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
     </dependency> 

     <!-- POI --> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-contrib</artifactId> 
     </dependency> 

     <!-- Struts --> 
     <dependency> 
       <!-- 
       <groupId>struts</groupId> 
       --> 
       <groupId>fr.sacem.struts</groupId> 
      <artifactId>struts</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>xerces</groupId> 
      <artifactId>xercesImpl</artifactId> 
     </dependency> 

     <!-- JUnit --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>fr.sacem.fwk</groupId> 
      <artifactId>fwkunit</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <!-- API JavaEE 
     <dependency> 
      <groupId>javaee</groupId> 
      <artifactId>javaee-api</artifactId> 
      <scope>provided</scope> 
     </dependency> 
      --> 

     <!-- API Servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <scope>provided</scope> 
     </dependency> 

     <!-- API JSP --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jsp-api</artifactId> 
      <scope>provided</scope> 
     </dependency> 

     <!-- API JTA --> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <scope>provided</scope> 
     </dependency> 

     <!-- YUI Compressor --> 
     <dependency> 
      <groupId>com.yahoo.platform.yui</groupId> 
      <artifactId>yuicompressor</artifactId> 
      <version>2.4.7</version> 
      <scope>provided</scope> 
      <type>jar</type> 
     </dependency> 
    </dependencies> 

    <properties> 
     <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 

     <frmwk.project.build.sourceEncoding>${project.build.sourceEncoding}</frmwk.project.build.sourceEncoding> 
     <frmwk.project.copyright>Copyright 2002-2015 SACEM.</frmwk.project.copyright> 

     <frmwk.web.directory.build>${basedir}/build</frmwk.web.directory.build> 

     <frmwk.web.directory.source.java>${basedir}/WEB-INF/sources/java/dev</frmwk.web.directory.source.java> 
     <frmwk.web.directory.classes>${frmwk.web.directory.build}/classes</frmwk.web.directory.classes> 

     <frmwk.web.directory.test.sources>${basedir}/WEB-INF/sources/java/tests</frmwk.web.directory.test.sources> 
     <frmwk.web.directory.test.config>${basedir}/WEB-INF/config</frmwk.web.directory.test.config> 
     <frmwk.web.directory.test.resources>${basedir}/WEB-INF/ressources</frmwk.web.directory.test.resources> 
     <frmwk.web.directory.test.classes>${frmwk.web.directory.build}/test-classes</frmwk.web.directory.test.classes> 

     <frmwk.web.directory.deploy>${basedir}/WEB-INF/deploiement</frmwk.web.directory.deploy> 
     <frmwk.web.directory.templates>${frmwk.web.directory.deploy}/script/templates</frmwk.web.directory.templates> 

     <frmwk.resources.jsp>${project.artifactId}-${project.version}-jsp</frmwk.resources.jsp> 
     <frmwk.resources.tools.yuicompressor>${maven.dependency.com.yahoo.platform.yui.yuicompressor.jar.path}</frmwk.resources.tools.yuicompressor> 

    </properties> 

    <build> 
     <directory>${frmwk.web.directory.build}</directory> 
     <sourceDirectory>${frmwk.web.directory.source.java}</sourceDirectory> 

     <resources> 
      <resource> 
       <directory>${frmwk.web.directory.source.java}</directory> 
       <filtering>false</filtering> 
       <includes> 
        <include>**/*.xml</include> 
        <include>**/*.properties</include> 
       </includes> 
      </resource> 
     </resources> 
     <outputDirectory>${frmwk.web.directory.classes}</outputDirectory> 

     <testSourceDirectory>${frmwk.web.directory.test.sources}</testSourceDirectory> 
     <testResources> 
      <testResource> 
       <directory>${frmwk.web.directory.test.resources}</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>**/*</include> 
       </includes> 
      </testResource> 
      <testResource> 
       <directory>${frmwk.web.directory.test.config}</directory> 
       <filtering>false</filtering> 
       <includes> 
        <include>**/*</include> 
       </includes> 
      </testResource> 
     </testResources> 
     <testOutputDirectory>${frmwk.web.directory.test.classes}</testOutputDirectory> 

     <plugins> 
      <!-- - - - - - - - - - - - - - - - - - 
        JAVADOC 
       - - - - - - - - - - - - - - - - - --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-javadoc-plugin</artifactId> 
       <configuration> 
        <javadocExecutable>${frmwk.javadoc.executable}</javadocExecutable> 
        <docfilessubdirs>true</docfilessubdirs> 

        <locale>fr_FR</locale> 

        <version>true</version> 
        <author>true</author> 
        <use>true</use> 
        <private>false</private> 
        <doctitle>${project.name} ${project.version}</doctitle> 
        <windowtitle>${project.name} ${project.version}</windowtitle> 
        <header>&lt;b&gt;${project.name} ${project.version}&lt;/b&gt;</header> 
        <bottom>${frmwk.project.copyright}</bottom> 

        <stylesheetfile>${frmwk.web.directory.templates}/javadoc-stylesheet/stylesheet.css</stylesheetfile> 
       </configuration> 
       <executions> 
       <execution> 
        <id>attach-javadocs</id> 
        <goals> 
        <goal>jar</goal> 
        </goals> 
       </execution> 
       </executions> 
      </plugin> 

      <!-- - - - - - - - - - - - - - - - - - 
        COMPILATION JAVA 1.6 
       - - - - - - - - - - - - - - - - - --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>${frmwk.compile.source}</source> 
        <target>${frmwk.compile.target}</target> 
        <verbose>${frmwk.compile.verbose}</verbose> 
        <debug>${frmwk.compile.debug}</debug> 
        <encoding>${frmwk.project.build.sourceEncoding}</encoding> 
        <showDeprecation>${frmwk.compile.deprecation}</showDeprecation> 
        <optimize>${frmwk.compile.optimize}</optimize> 

        <fork>${frmwk.compile.fork}</fork> 

        <executable>${frmwk.compile.executable}</executable> 
        <compilerVersion>${frmwk.compile.compilerVersion}</compilerVersion> 
       </configuration> 
      </plugin> 
      <!-- - - - - - - - - - - - - - - - - - 
        SOURCES JAVA 
       - - - - - - - - - - - - - - - - - --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-source-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>attach-sources</id> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <!-- ================================= 
        PREPARER LIVRAISON AMELY 
       ================================= --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <executions> 
        <!-- - - - - - - - - - - - - - - - - - 
          target: copy-jars-to-delivery-dir      
         - - - - - - - - - - - - - - - - - --> 
        <execution> 
         <id>copy-jars-to-delivery-dir</id> 
         <phase>install</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <configuration> 
          <target name="Jar" description="Livrer la librairie"> 
           <!-- S'assurer de l'existence du dossier de livraison --> 
           <mkdir dir="${frmwk.project.delivery.dir}" /> 

           <!-- Copier les jar --> 
           <copy todir="${frmwk.project.delivery.dir}" overwrite="true" > 
            <fileset dir="${frmwk.web.directory.build}"> 
             <filename name="*.jar"/> 
            </fileset> 
           </copy> 
          </target> 
         </configuration> 
        </execution> 
        <!-- - - - - - - - - - - - - - - - - - 
          target: copy-javadoc-to-delivery-dir      
         - - - - - - - - - - - - - - - - - --> 
        <execution> 
         <id>copy-javadoc-to-delivery-dir</id> 
         <phase>install</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <configuration> 
          <target name="Javadoc" description="Livrer la documentation en ligne (api)"> 
           <!-- S'assurer de l'existence du dossier dedestination --> 
           <mkdir dir="${frmwk.project.delivery.dir}/Javadoc/${project.artifactId}" /> 

           <!-- Copier le dossier --> 
           <copy todir="${frmwk.project.delivery.dir}/Javadoc/${project.artifactId}" overwrite="true" > 
            <fileset dir="${frmwk.web.directory.build}/apidocs"> 
             <filename name="**/*"/> 
            </fileset> 
           </copy> 

           <!-- Copier le template de dossier Amely --> 
           <filter token="projectVersion" value="${project.version}"/> 
           <filter token="projectName" value="${project.artifactId}"/> 
           <copy file="${frmwk.web.directory.templates}/amely/Javadoc/project.name/folder.amely" 
             tofile="${frmwk.project.delivery.dir}/Javadoc/${project.artifactId}/folder.amely" 
             filtering="true"/> 
          </target> 
         </configuration> 
        </execution> 
        <!-- - - - - - - - - - - - - - - - - - 
          target: zip-sources-non-public      
         - - - - - - - - - - - - - - - - - --> 
        <execution> 
         <id>zip-sources-non-public</id> 
         <phase>package</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <configuration> 
          <target name="SourcesNonPublic" description="Livrer les sources (non public)"> 
           <mkdir dir="${frmwk.project.delivery.dir}/SourcesNonPublic" /> 

           <!-- Zipper l'intégralité du projet --> 
           <zip destfile="${frmwk.project.delivery.dir}/SourcesNonPublic/${project.artifactId}_${project.version}.srcnonpublic.zip"> 
            <fileset dir="${basedir}"> 
             <include name=".settings/**/*"/> 
             <include name="commun/**/*"/> 
             <include name="fwk/**/*"/> 
             <include name="WEB-INF/**/*"/> 
             <include name=".*"/> 

             <exclude name="build/"/> 
             <exclude name="*.log"/> 
            </fileset> 
           </zip> 
          </target> 
         </configuration> 
        </execution> 
        <!-- - - - - - - - - - - - - - - - - - 
          target: fwkweb-jsp-zip      
         - - - - - - - - - - - - - - - - - --> 
        <execution> 
         <id>fwkweb-jsp-zip</id> 
         <phase>package</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         <configuration> 
          <target name="jsp-build-zip"> 
           <delete dir="${frmwk.project.delivery.dir}/${frmwk.resources.jsp}.zip" failonerror="false" /> 

           <zip zipfile="${frmwk.project.delivery.dir}/${frmwk.resources.jsp}.zip"> 
            <zipfileset dir="${basedir}" prefix="src/main/webapp"> 
             <include name="fwk/**/*"/> 
            </zipfileset> 
            <zipfileset dir="${basedir}/WEB-INF/ressources" prefix="src/main/resources"> 
             <include name="*.properties"/> 
            </zipfileset> 
           </zip> 
          </target> 
         </configuration> 
        </execution> 
      </executions> 
      </plugin> 

      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <executions> 
        <!-- ================================= 
          target: FRMWK-${project.version}.zip    
         ================================= --> 
        <execution> 
         <id>attach-artifacts</id> 
         <phase>package</phase> 
         <goals> 
          <goal>attach-artifact</goal> 
         </goals> 
         <configuration> 
          <artifacts> 
           <artifact> 
            <file>${frmwk.project.delivery.dir}/${frmwk.resources.jsp}.zip</file> 
            <type>zip</type> 
            <classifier>jsp</classifier> 
           </artifact> 
          </artifacts> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 


    <profiles> 
     <!-- 
     - - - - - - - - - - - - - - - - - - - 
      Profile: FRMWK 
     - - - - - - - - - - - - - - - - - - - - 
     --> 
     <profile> 
      <id>FRMWK</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <properties> 
       <!-- Paramètre de build des modules FRMWK --> 
       <frmwk.compile.executable>${JAVA_1_6_HOME}/bin/${JAVAC_EXE}</frmwk.compile.executable> 
       <frmwk.javadoc.executable>${JAVA_1_6_HOME}/bin/${JAVADOC_EXE}</frmwk.javadoc.executable> 

       <!-- Options de compilation --> 
       <frmwk.compile.source>1.6</frmwk.compile.source> 
       <frmwk.compile.target>${frmwk.compile.source}</frmwk.compile.target> 
       <frmwk.compile.verbose>true</frmwk.compile.verbose> 
       <frmwk.compile.debug>true</frmwk.compile.debug> 
       <frmwk.compile.deprecation>true</frmwk.compile.deprecation> 
       <frmwk.compile.optimize>true</frmwk.compile.optimize> 
       <frmwk.compile.fork>true</frmwk.compile.fork> 
       <frmwk.compile.compilerVersion>${frmwk.compile.source}</frmwk.compile.compilerVersion> 

       <frmwk.project.delivery.dir>${FRMWK_DELIVRY_HOME}/V${project.version}</frmwk.project.delivery.dir> 
      </properties> 
     </profile> 
    </profiles> 

</project> 
+0

Le problème est un peu difficile à expliquer. N'hésitez pas à demander des précisions. –

+0

plexus-classworlds-2.5.2-sources.jar rétrograder la version jar qui est construite en Java 6 – Kick

+0

Il serait utile de fournir la configuration 'pom.xml' ici. – Andremoniy

Répondre

1

Un message d'erreur tel que

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0

impliqueront toujours qu'un code compilé en utilisant 7 JDK est en cours d'exécution par une version non compatible avec JRE (très probablement 6 ou moins).

Dans votre cas d'utilisation particulier (projet a besoin JDK6), vous devez vous assurer que la version Maven maximale utilisée est 3.2.5 (la dernière version officielle JDK6 conforme Maven actuelle).

Si votre système héberge différentes versions de Maven, vous devrez forcer la version utilisée.

Et, selon la façon dont Maven est lancé, vous pouvez forcer cette version Maven par:

  • ligne de commande: set M2_HOME variable d'environnement au point que l'installation et assurez-vous de l'exécutable est 3.2. 5 (PATH variable d'environnement)
  • IDE: vérifiez que l'EDI est configuré pour utiliser la version Maven dont vous avez besoin. Voir comment faire cela here for IntelliJ et there for Eclipse