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?
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).
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>
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
.
<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>
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.
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
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.
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.
Ein weiterer Punkt, an dem dies schief gehen kann, ist in den projektspezifischen Einstellungen in Eclipse.
projekteigenschaften: Klicken Sie auf Ihr Projekt und eine der folgenden Optionen:
klicken Sie auf "Java Compiler"
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:
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.
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.
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
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.
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.
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 /