Quali sono le cause del progetto Maven importati in Eclipse per utilizzare Java 1.5, invece di Java 1.6 di default e come posso assicurare che non lo fa?

StackOverflow https://stackoverflow.com/questions/3539139

Domanda

ho importato un progetto Maven ed è utilizzato Java 1.5, anche se ho 1.6 configurato come il mio Eclipse Preferences->Java->Installed JREs predefinita.

Quando ho cambiato il progetto Maven di utilizzare la 1.6 di JRE aveva ancora gli errori di generazione rimasto da quando il progetto stava usando Java 1.5 (ho descritto questi errori di generazione in precedenza in: ho errori di generazione con m2eclipse ma non con maven2 su la linea di comando -? è il mio m2eclipse mal configurato )

ho intenzione di cancellare il progetto e provare di nuovo ma voglio fare in modo questa volta che utilizza Java 1.6 dall'inizio per vedere se questo elimina i problemi di compilazione.

Come faccio a essere sicuro il progetto utilizza Java 1.6, quando ho importarlo?

È stato utile?

Soluzione

Il plugin m2eclipse non usa le impostazioni predefinite di Eclipse, il plugin m2eclipse deriva le impostazioni dal POM. Quindi, se volete un progetto Maven per essere configurato per utilizzare le impostazioni di Java 1.6, quando importati in Eclipse, configurare il maven-compiler-plugin in modo appropriato, come ho già suggerito:

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

Se il progetto è già importata, aggiornare la configurazione del progetto ( tasto destro del mouse sul progetto quindi Maven V Aggiornamento configurazione del progetto ).

Altri suggerimenti

ho aggiunto questo al mio pom.xml sotto la descrizione del progetto e ha funzionato:

<properties>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
</properties>

ho voluto aggiungere qualcosa alla risposta già fornita. Maven-compiler-plugin di default sarà compilare il progetto utilizzando Java 1.5, che è dove M2E ottenere informazioni del suo .

È per questo che si deve dichiarare in modo esplicito il Maven-compiler-plugin nel progetto con qualcosa altri poi 1.5. Il tuo pom.xml efficace implicitamente utilizzare il set di default nel Maven-compiler-plugin pom.xml.

<project>

    <!-- ... -->

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Il JRE è stata probabilmente definito in configurazione di esecuzione. Seguire questa procedura in Eclipse per cambiare il JRE build.

1) Fare clic destro sul progetto e selezionare Esegui come > Run Configurazioni

2) Dalla finestra Esegui Configurazioni, selezionare la configurazione di generazione del progetto sul pannello di sinistra. Sulla destra, vedrete varie schede: Principale, JRE, Refresh, Fonte, ...

3) Fare clic sulla scheda JRE, si dovrebbe vedere qualcosa di simile

entrare descrizione dell'immagine qui

4) Per impostazione predefinita, di lavoro predefinito JRE (JRE si seleziona come predefinito in Preferenze> Java-> JRE installata ) saranno utilizzati. Se si desidera utilizzare un altro installato JRE, spuntare la Alternate JRE casella di controllo e selezionare il JRE preferita dall'elenco a discesa.

Questa è la causa principale di Java 1.5:

  

Si noti inoltre che allo stato attuale l'impostazione della sorgente di default è 1.5 e l'impostazione di default è 1.5, indipendentemente dal JDK si esegue Maven con. Se si desidera modificare queste impostazioni predefinite, è necessario impostare origine e di destinazione.

Riferimento: Apache Mavem Compiler Plugin

Di seguito sono riportati i dettagli:

pom.xml Plain

    <?xml version="1.0" encoding="UTF-8"?>
    <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/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>

    <groupId>com.pluralsight</groupId>
    <artifactId>spring_sample</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>

A seguito di plug-in è tratto da una versione POM espanso (Effective POM),

Questo può essere ottenere da questo comando dalla riga di comando C:\mvn help:effective-pom ho appena messo qui un piccolo frammento, invece di un intero pom.

    <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <executions>
      <execution>
        <id>default-compile</id>
        <phase>compile</phase>
        <goals>
          <goal>compile</goal>
        </goals>
      </execution>
      <execution>
        <id>default-testCompile</id>
        <phase>test-compile</phase>
        <goals>
          <goal>testCompile</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

Anche qui non si vede dove è la versione Java definito, consente di scavare più ...

Scarica il plugin, Apache Maven Compiler Plugin »3.1 come disponibile in barattolo e aprirlo in qualsiasi strumento di compressione dei file come 7-zip

Traverse vaso e findout

  

plugin.xml

file all'interno della cartella

  

Maven-compiler-plugin-3.1.jar \ META-INF \ Maven \

Ora si vedrà la seguente sezione del file,

      <configuration>
    <basedir implementation="java.io.File" default-value="${basedir}"/>
    <buildDirectory implementation="java.io.File" default-value="${project.build.directory}"/>
    <classpathElements implementation="java.util.List" default-value="${project.testClasspathElements}"/>
    <compileSourceRoots implementation="java.util.List" default-value="${project.testCompileSourceRoots}"/>
    <compilerId implementation="java.lang.String" default-value="javac">${maven.compiler.compilerId}</compilerId>
    <compilerReuseStrategy implementation="java.lang.String" default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy>
    <compilerVersion implementation="java.lang.String">${maven.compiler.compilerVersion}</compilerVersion>
    <debug implementation="boolean" default-value="true">${maven.compiler.debug}</debug>
    <debuglevel implementation="java.lang.String">${maven.compiler.debuglevel}</debuglevel>
    <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}">${encoding}</encoding>
    <executable implementation="java.lang.String">${maven.compiler.executable}</executable>
    <failOnError implementation="boolean" default-value="true">${maven.compiler.failOnError}</failOnError>
    <forceJavacCompilerUse implementation="boolean" default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse>
    <fork implementation="boolean" default-value="false">${maven.compiler.fork}</fork>
    <generatedTestSourcesDirectory implementation="java.io.File" default-value="${project.build.directory}/generated-test-sources/test-annotations"/>
    <maxmem implementation="java.lang.String">${maven.compiler.maxmem}</maxmem>
    <meminitial implementation="java.lang.String">${maven.compiler.meminitial}</meminitial>
    <mojoExecution implementation="org.apache.maven.plugin.MojoExecution">${mojoExecution}</mojoExecution>
    <optimize implementation="boolean" default-value="false">${maven.compiler.optimize}</optimize>
    <outputDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
    <showDeprecation implementation="boolean" default-value="false">${maven.compiler.showDeprecation}</showDeprecation>
    <showWarnings implementation="boolean" default-value="false">${maven.compiler.showWarnings}</showWarnings>
    <skip implementation="boolean">${maven.test.skip}</skip>
    <skipMultiThreadWarning implementation="boolean" default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning>
    <source implementation="java.lang.String" default-value="1.5">${maven.compiler.source}</source>
    <staleMillis implementation="int" default-value="0">${lastModGranularityMs}</staleMillis>
    <target implementation="java.lang.String" default-value="1.5">${maven.compiler.target}</target>
    <testSource implementation="java.lang.String">${maven.compiler.testSource}</testSource>
    <testTarget implementation="java.lang.String">${maven.compiler.testTarget}</testTarget>
    <useIncrementalCompilation implementation="boolean" default-value="true">${maven.compiler.useIncrementalCompilation}</useIncrementalCompilation>
    <verbose implementation="boolean" default-value="false">${maven.compiler.verbose}</verbose>
    <mavenSession implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
    <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
  </configuration>

Guardate il codice qui sopra e scoprire le seguenti 2 linee

    <source implementation="java.lang.String" default-value="1.5">${maven.compiler.source}</source>
    <target implementation="java.lang.String" default-value="1.5">${maven.compiler.target}</target>

In bocca al lupo.

impostazioni specifiche del progetto

Un altro posto in cui questo può andare male è nelle impostazioni di progetto specifici, in Eclipse.

  1. proprietà del progetto: fare clic con il progetto e una delle seguenti:

    • Alt + Invio
    • Menu> Progetto> Proprietà
    • tasto destro del progetto> proprietà del progetto (l'ultima voce del menu)
  2. clicca su "Java Compiler"

  3. Deseleziona "Abilita impostazioni specifiche di progetto" (o li cambia a mano).

A causa delle esigenze del cliente che abbiamo avuto li ha permesso di mantenere i nostri progetti in 1.6. Quando è stato necessario per l'aggiornamento a 1.7, abbiamo avuto un momento difficile perché avevamo bisogno di cambiare la versione di Java in tutto il luogo:

  • progetto POM
  • Eclipse Area di lavoro di default
  • Impostazioni progetto specifico
  • l'esecuzione di macchine virtuali (1.6 è stato utilizzato per tutto)

soluzione più semplice in Springboot

ti do la più semplice se si utilizza Springboot:

<properties>
  <java.version>1.8</java.version>
</properties>

Quindi, fare clic destro sul progetto Eclipse: Maven> Progetto Aggiornamento> Aggiornamento configurazione del progetto da pom.xml

Questo dovrebbe fare.

Un altro motivo possibile se si utilizza Tycho e Maven per fasci di build, che si dispone di ambiente di esecuzione sbagliato (Bundle-RequiredExecutionEnvironment) nel file manifesto (manifest.mf) definito. Ad esempio:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Engine Plug-in
Bundle-SymbolicName: com.foo.bar
Bundle-Version: 4.6.5.qualifier
Bundle-Activator: com.foo.bar.Activator
Bundle-Vendor: Foobar Technologies Ltd.
Require-Bundle: org.eclipse.core.runtime,
 org.jdom;bundle-version="1.0.0",
 org.apache.commons.codec;bundle-version="1.3.0",
 bcprov-ext;bundle-version="1.47.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.5
Export-Package: ...
...
Import-Package: ...
...

Nel mio caso tutto il resto era ok. I plugin compilatore (Maven normale e Tycho così) sono stati impostati correttamente, ancora m2 generato vecchio livello di conformità a causa del manifesto. Ho pensato che condividere l'esperienza.

ho scoperto che il mio problema era che qualcuno ha commesso il file .project e .classpath che ha avuto i riferimenti alla Java1.5 come il JRE predefinito.

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
    <attributes>
        <attribute name="owner.project.facets" value="java"/>
    </attributes>
</classpathentry>

Con la chiusura del progetto, rimozione dei file, e poi ri-importare come un progetto Maven, sono stato in grado di impostare correttamente il progetto per l'utilizzo di lavoro JRE o JDK rilevanti senza di essa ritornare alla 1.5. Quindi, evitare di controllare nella vostra SVN il .project e .classpath file

Spero che questo aiuta gli altri.

Se si vuole fare in modo che i progetti di nuova creazione o importato progetti in Eclipse utilizzare un'altra versione java di default di Java 1.5, è possibile modificare la configurazione nel Maven-compiler-plugin.

  • Vai alla cartella .m2 / repository / org / apache / Maven / plugins / Maven-compiler-plugin / 3.1
  • Apri Maven-compiler-plugin-3.1.jar con un programma zip.
  • Vai a META-INF / Maven e aprire la plugin.xml
  • Nelle righe seguenti:
    $ {} maven.compiler.source
    $ {maven.compiler.target}

  • modificare il valore predefinito valore di 1.6 o 1.8 o quello che vuoi.

  • Salva il file e assicurarsi che sia ripristinato al file zip.

Da ora in poi tutti i nuovi progetti Maven utilizzare la versione Java specificata.

L'informazione è dalla seguente post del blog: https://sandocean.wordpress.com/2019/03/22/directly-generating-maven-projects-in-eclipse-with-java-version- più nuovo-che-1-5 /

Per cambiare la versione del JDK, si può fare:

1- Progetto> Proprietà
2 Vai a Java Build Path
3- In Librerie, selezionare JRE sistema ... e fare clic su Modifica
4- Scegli la versione adatta e validate

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top