IDEA: javac: wersja źródłowa 1.7 wymaga wersji docelowej 1.7

474

Po uruchomieniu testu JUnit za pomocą IntelliJ IDEA otrzymuję

wprowadź opis zdjęcia tutaj

Jak mogę to naprawić?

  • Korzystanie z SDK 1.7
  • Poziom języka modułu to 1.7

Kompilacja Maven działa dobrze. (Dlatego uważam to za problem z konfiguracją IDEA)

James Raitsev
źródło

Odpowiedzi:

689

Najprawdopodobniej masz niepoprawne opcje kompilatora zaimportowane z Maven tutaj:

opcje kompilatora

Sprawdź także ustawienia wersji kodu bajtowego projektu i modułu ( docelowe ) przedstawione na zrzucie ekranu.

Inne miejsca, w których skonfigurowano poziom języka źródłowego :

  • Struktura projektu | Projekt

projekt

  • Struktura projektu | Moduły (sprawdź każdy moduł) | Źródła

źródła

Domyślny poziom języka Maven to 1,5 (5,0), zobaczysz tę wersję jako poziom języka Moduł na zrzucie ekranu powyżej.

Można to zmienić za pomocą konfiguracji wtyczki kompilatora maven wewnątrz pom.xml:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

lub

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

IntelliJ IDEA zastosuje się do tego ustawienia po ponownym zaimportowaniu projektu Maven w oknie narzędzia Maven Projects :

ponowny import

CrazyCoder
źródło
2
Poprawny. Czy to ustawienie jest wspólne dla wszystkich modułów w projekcie, czy jest specyficzne dla danego modułu?
James Raitsev
1
To ustawienie dotyczy projektu, dotyczy wszystkich modułów.
CrazyCoder,
8
Czy jest jakiś powód, dla którego po naprawieniu i zastosowaniu tego przywróciłoby ono z powrotem jakąś niepoprawną wartość (albo poprzez zmiany mavena, albo coś takiego)?
Patrick
5
@Patrick, pom.xmlkonfiguracja wtyczki kompilatora Java może określić wersję Java, która zastąpi to ustawienie przy następnym wprowadzeniu zmian w pliku pom.xml (jeśli włączona jest automatyczna ponowna importacja) lub ponownym importowaniu projektu ręcznie.
CrazyCoder
1
@CrazyCoder Zmieniłem swój plik pom.xml po tym, jak zmieniłem go raz wcześniej (czekałem na inne nadchodzące zmiany w pom), więc to brzmi jak całkiem rozsądne wytłumaczenie. Dzięki
Patrick
358

IntelliJ 15, 2016 i 2017

Podobne do omówionego poniżej dla IntelliJ 13 i 14, ale z dodatkowym poziomem w panelu Ustawienia / Preferencje: Ustawienia > Kompilacja, wykonanie, wdrożenie > Kompilator > Kompilator Java .

wprowadź opis zdjęcia tutaj

IntelliJ 13 i 14

W IntelliJ 13 i 14 sprawdź Ustawienia> Kompilator> Interfejs kompilatora Java, aby upewnić się, że nie celujesz w inną wersję kodu bajtowego w swoim module.

wprowadź opis zdjęcia tutaj

Drew Noakes
źródło
3
Musiałem usunąć moje moduły i pozwolić na automatyczne rozwiązywanie (pozostaw puste dla domyślnego jdk)
Akin Okegbile
3
Działa z najnowszym Idea14.1
Tushar
Więc jaka jest tutaj poprawka?
AlikElzin-kilaka
@ AlikElzin-kilaka, ustaw poziom docelowy na cokolwiek potrzebujesz.
Drew Noakes,
Czy ktoś może wyjaśnić, dlaczego miałby umieszczać określone ustawienia modułu na ekranie konfiguracji globalnych preferencji, a nie w ustawieniach modułu?
MK.
61

W IntelliJ IDEA 14.1 „Docelowa wersja kodu bajtowego” znajduje się w innym miejscu.

Następująca zmiana działała dla mnie:

Plik> Ustawienia ...> Kompilacja, wykonanie, wdrożenie> Kompilator> Kompilator Java : zmień docelową wersję kodu bajtu z 1,5 na 1,8

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

ROMANIA_inżynier
źródło
lub lepiej pozostawić to pole puste, gdy można to ustalić na podstawie jdk!
Dragonborn
Dlaczego istnieje inna konfiguracja niż konfiguracja maven?
AlikElzin-kilaka
42

Czy spojrzałeś na konfigurację kompilacji, tak powinno być, jeśli używasz maven 3 i JDK 7

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>
swissonid
źródło
22

Natknąłem się na to i poprawką było przejście do Ustawień projektu> Moduły> kliknij konkretny moduł> zakładkę Zależności. Zauważyłem, że moduł SDK wciąż był ustawiony na 1.6, zmieniłem go na 1.7 i działało.

Rob Barreca
źródło
Próbowałem tego ... Ostatecznie musiałem usunąć poszczególne moduły i pozostawić je do automatycznego rozwiązania.
Akin Okegbile
14

Znalazłem wymagane opcje ('docelowa wersja kodu bajtowego') w ustawieniach> kompilator> kompilator java w moim przypadku (pomysł 12.1.3)

eger
źródło
10

Zmodyfikuj plik ustawień kompilatora projektu w następującej ścieżce i zmień „target” na 1.7:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>
Joe Cheng
źródło
Dzięki, to działało dla mnie! Nie zapomnij zrobić „Utwórz moduł” [nazwa aplikacji] ”, klikając prawym przyciskiem myszy projekt
Shehaaz,
5

Rozwiązałem to, ustawiając pole puste:

Ustawienia> Kompilator> Kompilator Java> Wersja kodu bajtowego projektu

Niż IntelliJ używa domyślnej wersji JDK.

Robert Moszczyński
źródło
4

Z jednej chwili na drugi ten błąd też otrzymałem bez wyraźnego powodu. Zmieniłem wszelkiego rodzaju ustawienia kompilatora / modułu itp. Ale w końcu właśnie odtworzyłem projekt IntelliJ, ponownie importując projekt Maven i problem został rozwiązany. Myślę, że to błąd.

IntelliJ 12 129,961

pveentjer
źródło
To samo dotyczy IntelliJ 14.1.2. Ponownie zaimportowano projekt i został on naprawiony.
srikanth
4

Uderzyłem to po niewielkiej aktualizacji z IntelliJ IDEA 14 do wersji 14.1. Dla mnie pomogła zmiana edycji top / Parent Pom, a następnie kliknąłem ponownie importuj Maven (jeśli nie jest to automatyczne).

Ale może wystarczy kliknąć prawym przyciskiem myszy moduł / moduły / moduł nadrzędny i Maven -> Reimport.

OMax
źródło
to zadziałało dla mnie! Zrobiłem to dla modułu najwyższego poziomu i modułów potomnych
abelnation
2

Rozwiązałem metodę poniżej

Plik >> Struktura projektu >> Projekt >> Poziom języka projektu -> ustaw odpowiednią wersję (np. 1.5)

mati
źródło
1

sprawdź .idea / misc.xml czasami trzeba ręcznie zmienić atrybut languageLevel = "JDK_1_X"

kai
źródło
1

Jeśli jest to projekt Gradle, w pliku build.gradle wyszukaj następujące ustawienia:

sourceCompatibility = "xx"
targetCompatibility = "xx"

Dla wszystkich podprogramów w głównym pliku build.gradle możesz umieścić:

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

Chociaż możesz ręcznie ustawić poziomy językowe w Pomysł> Ustawienia, jeśli jest to projekt Gradle, Idea automatycznie synchronizuje pliki modułu .iml z ustawieniami Gradle (testowane z Idea 15+). Dlatego wszystkie ręczne zmiany są zastępowane po odświeżeniu stopnia.

Na podstawie dokumentacji Gradle , jeśli nie są one ustawione, używana jest bieżąca konfiguracja JVM.

Cagatay Kalan
źródło
1

Znalazłem inny sposób na wystąpienie tego błędu. Możesz to uzyskać, jeśli ponownie organizujesz strukturę katalogów, a jeden z poms wskazuje starego rodzica, który już nie konfiguruje javac (ponieważ ta konfiguracja została przeniesiona na poziom średni). Jeśli tak się stanie, najwyższy poziom domyślnie wyniesie 1,5, a niewłaściwie zachowujący się pom dolny odziedziczy go.

Kolejną rzeczą, którą należy sprawdzić, gdy zobaczysz ten błąd, jest to, czy struktura pom poprawnie dopasowuje się do struktury katalogów.

Gus
źródło
1

Jeśli kompilacja Maven działa poprawnie, spróbuj zsynchronizować strukturę projektów Maven i IntelliJ IDEA.

W oknie narzędzia Maven kliknij przycisk odświeżania odświeżać. Po naciśnięciu tego przycisku IntelliJ IDEA analizuje strukturę projektu w oknie narzędzia Maven.

Pamiętaj, że może to nie pomóc, jeśli używasz kompilacji EAP, ponieważ funkcja synchronizacji Maven może czasami być zepsuta.

naXa
źródło
0

Upewnij się, że wybrano odpowiednią depresję. Plik> Struktura projektu

Wybierz swój projekt i przejdź do zakładki Zależności. Wybierz odpowiednią zależność z menu rozwijanego lub utwórz nową.

Viraj Kulkarni
źródło
0

Jeśli wszystkie poprzednie rozwiązania nie działały dla Ciebie (tak było w moim przypadku), możesz usunąć pliki konfiguracyjne intellij:

  • katalog_projektów / .idea / compiler.xml
  • katalog_projektu / .idea / encodings.xml
  • katalog_projektów / .idea / misc.xml
  • katalog_projektów / .idea / modules.xml
  • katalog_projektu / .idea / vcs.xml
  • katalog_projektu / .idea / workspace.xml
  • itp.

Intellij zregeneruje nowe później. Należy jednak zachować ostrożność, spowoduje to również usunięcie całej konfiguracji intellij dokonanej na projektorze (tj .: konfiguracja trybu debugowania, ...)

Youness Marhrani
źródło
0

Musisz zmienić wersję kompilatora Java w konfiguracji kompilacji.

wprowadź opis zdjęcia tutaj

Nirbhay Rana
źródło