it-swarm.com.de

Was bewirkt, dass importiertes Maven-Projekt in Eclipse Java 1.5 anstelle von Java 1.6 standardmäßig verwendet und wie kann ich sicherstellen, dass dies nicht der Fall ist?

Ich habe ein Maven-Projekt importiert und es hat Java 1.5 verwendet, obwohl ich 1.6 als Eclipse-Standard konfiguriert habe Preferences->Java->Installed JREs.

Als ich das Maven-Projekt auf die Verwendung von 1.6 JRE änderte, blieben immer noch die Build-Fehler zurück, die bei der Verwendung von Java 1.5 (Ich habe diese Build-Fehler weiter oben in: I habe Build-Fehler mit m2Eclipse, aber nicht mit maven2 in der Befehlszeile - ist meine m2Eclipse falsch konfiguriert? )

Ich werde das Projekt löschen und es erneut versuchen, aber ich möchte diesmal sicherstellen, dass es Java 1.6 von Anfang an verwendet, um zu sehen, ob dies die Build-Probleme beseitigt.

Wie stelle ich sicher, dass das Projekt beim Importieren Java 1.6) verwendet?

208
Chris Collins

Das m2Eclipse-Plugin verwendet keine Eclipse-Standardeinstellungen, das m2Eclipse-Plugin leitet die Einstellungen vom POM ab. Wenn Sie also möchten, dass ein Maven-Projekt so konfiguriert wird, dass es Java 1.6-Einstellungen verwendet, wenn es unter Eclipse importiert wird), konfigurieren Sie das maven-compiler-plugin passend, wie ich schon angedeutet habe:

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

Wenn Ihr Projekt bereits importiert wurde, aktualisieren Sie die Projektkonfiguration (Rechtsklick auf das Projekt und Maven V Update Project Configuration).

243
Pascal Thivent

Ich habe dies zu meiner pom.xml unterhalb der Projektbeschreibung hinzugefügt und es hat funktioniert:

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

Ich wollte der bereits gegebenen Antwort etwas hinzufügen. maven-compiler-plugin kompiliert Ihr Projekt standardmäßig mit Java 1.5, wo m2e seine Informationen erhält.

Deshalb müssen Sie das maven-compiler-plugin in Ihrem Projekt explizit mit etwas anderem als 1.5 deklarieren. Ihr effektiver pom.xml verwendet implizit die Standardeinstellung im maven-compiler-pluginpom.xml.

28
Nicholas
<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>
27
pitchblack408

Hier ist die Ursache von Java 1.5:

Beachten Sie außerdem, dass die Standardquelleneinstellung derzeit 1,5 und die Standardzieleinstellung 1,5 ist, unabhängig von dem JDK, mit dem Sie Maven ausführen. Wenn Sie diese Standardeinstellungen ändern möchten, sollten Sie Quelle und Ziel festlegen.

Referenz: Apache Mavem Compiler Plugin

Es folgen die Details:

Einfache pom.xml

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

Das folgende Plugin stammt aus einer erweiterten POM-Version (Effective POM).

Dies kann mit diesem Befehl über die Befehlszeile C:\mvn help:effective-pom Ich habe hier nur einen kleinen Ausschnitt anstatt eines ganzen Bommels platziert.

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

Auch hier sehen Sie nicht, wo die Java Version definiert ist, lassen Sie Dig mehr ...

Laden Sie das Plugin, Apache Maven Compiler Plugin "3.1 , herunter und öffnen Sie es in einem beliebigen Dateikomprimierungsprogramm wie 7-Zip

Durchquere das Glas und finde es heraus

plugin.xml

datei im Ordner

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

Jetzt sehen Sie den folgenden Abschnitt in der Datei,

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

Schauen Sie sich den obigen Code an und finden Sie die folgenden 2 Zeilen heraus

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

Viel Glück.

6
rogue lad

Ihre JRE wurde wahrscheinlich in der Ausführungskonfiguration definiert. Befolgen Sie diese Schritte in Eclipse, um die Build-JRE zu ändern.

1) Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Ausführen als> Konfigurationen ausführen

2) Wählen Sie im Fenster "Run Configurations" (Konfigurationen ausführen) im linken Bereich Ihre Projekterstellungskonfiguration aus. Rechts sehen Sie verschiedene Registerkarten: Main, JRE, Refresh, Source, ...

3) Klicken Sie auf die Registerkarte JRE. Sie sollten so etwas sehen

enter image description here

4) Standardmäßig wird Work Default JRE (Die JRE, die Sie als Standard unter Einstellungen-> Java-> Installierte JREs auswählen) verwendet. Wenn Sie eine andere installierte JRE verwenden möchten, aktivieren Sie das Kontrollkästchen Alternative JRE und wählen Sie Ihre bevorzugte JRE aus der Dropdown-Liste aus.

6
Tony Vu

Einfachste Lösung in Springboot

Ich gebe Ihnen die einfachste, wenn Sie Springboot verwenden:

<properties>
  <Java.version>1.8</Java.version>
</properties>

Klicken Sie dann mit der rechten Maustaste auf Ihr Eclipse-Projekt: Maven> Projekt aktualisieren> Projektkonfiguration von pom.xml aktualisieren

Das sollte reichen.

2
sancho21

Projektspezifische Einstellungen

Ein weiterer Punkt, an dem dies schief gehen kann, ist in den projektspezifischen Einstellungen in Eclipse.

  1. projekteigenschaften: Klicken Sie auf Ihr Projekt und eine der folgenden Optionen:

    • Alt + Eingabetaste
    • Menü> Projekt> Eigenschaften
    • rechtsklick auf Ihr Projekt> Projekteigenschaften (letzter Menüpunkt)
  2. klicken Sie auf "Java Compiler"

  3. Deaktivieren Sie "Projektspezifische Einstellungen aktivieren" (oder ändern Sie sie alle manuell).

Aufgrund von Kundenanforderungen haben wir sie in die Lage versetzt, unsere Projekte in 1.6 beizubehalten. Als es für ein Upgrade auf 1.7 erforderlich war, fiel es uns schwer, da wir die Java) -Version überall ändern mussten:

  • projekt POM
  • Eclipse Workspace-Standardeinstellung
  • projektspezifische Einstellungen
  • ausführen der virtuellen Maschine (1.6 wurde für alles verwendet)
2
manuelvigarcia

Ich stellte fest, dass mein Problem darin bestand, dass jemand die Dateien .project und .classpath festgeschrieben hatte, die Verweise auf Java1.5 als Standard-JRE enthielten.

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

Durch Schließen des Projekts, Entfernen der Dateien und anschließendes erneutes Importieren als Maven-Projekt konnte ich das Projekt so einstellen, dass es Workspace JRE oder das entsprechende JDK verwendet, ohne dass es auf 1.5 zurückgesetzt wurde. Vermeiden Sie daher, die Dateien .project und .classpath in Ihren SVN einzuchecken

Hoffe das hilft anderen.

1
iowatiger08

Ein weiterer möglicher Grund, wenn Sie Tycho und Maven verwenden, um Bundles zu erstellen, dass Sie eine falsche Ausführungsumgebung haben (Bundle-RequiredExecutionEnvironment) in der Manifestdatei (manifest.mf) definiert. Beispielsweise:

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

In meinem Fall war alles in Ordnung. Die Compiler-Plugins (auch normaler Maven und Tycho) wurden korrekt gesetzt, m2 erzeugte aufgrund des Manifests immer noch eine alte Konformitätsstufe. Ich dachte, ich teile die Erfahrung.

1
Gábor Lipták

Um die Version von JDK zu ändern, haben Sie folgende Möglichkeiten:

1- Projekt> Eigenschaften
2- Gehen Sie zu Java Build Path
3- Wählen Sie in Libraries JRE System ... und klicken Sie auf Edit
4- Wählen Sie Ihre geeignete Version und validieren Sie

0

Wenn Sie sicherstellen möchten, dass neu erstellte oder in Eclipse importierte Projekte eine andere Standardversion Java Version als Java 1.5) verwenden, können Sie die Konfiguration im Maven ändern -Compiler-Plugin.

  • Wechseln Sie in den Ordner .m2/repository/org/Apache/maven/plugins/maven-compiler-plugin/3.1
  • Öffnen Sie maven-compiler-plugin-3.1.jar mit einem Zip-Programm.
  • Gehe zu META-INF/maven und öffne die plugin.xml
  • In den folgenden Zeilen:
    <source execution = "Java.lang.String" default-value = "1.5"> $ {maven.compiler.source} </ source>
    <target execution = "Java.lang.String" default-value = "1.5"> $ {maven.compiler.target} </ target>

  • ändere den Standardwert auf 1.6 oder 1.8 oder was auch immer du willst.

  • Speichern Sie die Datei und stellen Sie sicher, dass sie in die Zip-Datei zurückgeschrieben wird.

Ab sofort verwenden alle neuen Maven-Projekte die von Ihnen angegebene Java Version.

Informationen stammen aus dem folgenden Blog-Beitrag: https://sandocean.wordpress.com/2019/03/22/directly-generating-maven-projects-in-Eclipse-with-Java-version-newer-than- 1-5 /

0
user1201626