2014-09-04 4 views
5

Wir haben eine Maven basierte Android bauen, und wir haben nur den Wechsel von JDK 6 bis 7IntelliJ Einfuhren Projekt aus POM mit falscher JDK Version

Das kam allerdings mit seinem Anteil von IntelliJ Problemen. Was passiert, ist, dass jedes Mal, wenn eine Änderung in der POM erfaßt und Re-Importe/frischen das Projekt, es kehrt in die alten „Modul SDK“ wählen, die eine, die verwenden Java 6 konfiguriert ist:

enter image description here

Auch wenn ich diese SDKs manuell im Dialogfeld "Plattformeinstellungen" lösche, erscheinen sie immer wieder als "Maven Android API 19 Platform (N)", wobei N die Nummer ist, mit der es von allen anderen (identischen) SDKs disambiguiert wird.

Ich sollte erwähnen, dass wir in der POM angeben, dass Java 7 Ziel ist. Ich habe versucht, sowohl das Compiler-Plugin Sprachniveau zu setzen und die maven.compiler.* Eigenschaften (nicht sicher, ob das die gleiche Sache oder nicht erfüllt), ohne Glück:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
    <source>1.7</source> 
    <target>1.7</target> 
    </configuration> 
</plugin> 

sollte nicht IntelliJ, dass abholen und immer das Projekt konfiguriert ein Java 7 SDK verwenden? Fehle ich etwas?

Ich bemerkte, dass das Problem verschwindet, wenn ich alle Referenzen auf 1.6 SDKs vollständig in IntelliJ entferne. Nicht überraschend, denke ich, aber auch nicht praktikabel, da ich andere Projekte habe, die immer noch auf das Vorhandensein eines Java 6 SDK angewiesen sind.

Antwort

0

Es wird die jdk, die Sie in der Projektstruktur wählen, bitte ändern Sie es dort.

Datei> Projektstruktur> Projekteinstellung> Projekt> Projekt SDK Wählen Sie 1.7.

Wenn 1.7 nicht vorhanden ist, gehen Sie zu Datei> Projektstruktur> Plattform Einstellung> SDKs Add 1.7 dort.

+2

Nun, ich möchte es nicht jedes Mal manuell für jedes Untermodul ändern, wenn ich das POM neu lade ... klar, das ist dann ein Fehler in IntelliJ, wenn das nötig ist? – Matthias

+1

Wenn Sie es und das Hauptmodul setzen, erben alle Kinder das. – StackFlowed

+2

Das ist nicht das Problem. Das Problem ist, dass alle diese Dinge nach dem erneuten Importieren auf Java 6 zurückgesetzt werden. – Matthias

4

Ich stieß auf ein sehr ähnliches Problem mit Maven-Projekten, die ich mit IntelliJ (Version 14.x in meinem Fall) erstellt hatte. Ich hatte IntelliJ so konfiguriert, dass JDK 8 in den Projekteinstellungen verwendet wurde, aber die IDE behob weiterhin Probleme in meinem Code (z. B. beschwerte sich über die Verwendung von @Override).

Es stellt sich heraus, dass die Maven-Einstellungen hier Vorrang haben, was in meinem Fall auf JDK 1.5 (daher die IDE-Redlines) voreingestellt ist. Wenn Sie die Einstellungen hier ändern, wird das Problem behoben, jedoch nur vorübergehend, da sie zurückgesetzt werden, wenn die Maven-Projekte erneut importiert werden oder wenn IntelliJ neu gestartet wird.

Die permanente Lösung ist explizit deklariert die JDK-Version in Ihrer Maven Pom-Datei, wie in diesen Punkten erläutert.

stop IntelliJ IDEA to switch java language level everytime the pom is reloaded (or change the default project language level) von @vikingsteve

IDEA: javac: source release 1.7 requires target release 1.7 von @bacchus

Hier ist, was sie haben gesagt, Sie zu Ihrem pom.xml Datei hinzufügen müssen.

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Diese Einstellungen lassen in den Maven Einstellungen spiegelt sich in der IDE und löste das Problem für mich.

Verwandte Themen