2015-02-13 2 views
46

Używam Eclipse jako IDE. Po kliknięciu prawym przyciskiem myszy na projekcie, a następnie kliknięciu polecenia maven, moja wersja java zmieni się na 1.5. Oto co zrobiłem do tej pory, że wykonałeś wszystkie kroki wymienione tutajWersja Java automatycznie zmienia się na java 1.5 po aktualizacji klucza

http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires-java-1-6-or-newer-in-maven-projects/

  1. zmieniłem „zbudować ścieżkę Java” do „default roboczy jre 1.8.0_25”
  2. Potem zmienił „Java kompilator "1,8
  3. Potem zmienił "aspektów projektu"> Jawa> 1,8
  4. wersja zmieniono pom.xml java do 1,8
<build> 
     <plugins> 
      <plugin> 
       <groupId>org.eclipse.jetty</groupId> 
       <artifactId>jetty-maven-plugin</artifactId> 
       <version>9.1.3.v20140225</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugin</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

Po tym wszystkim, gdy klikam "Aktualizacja Mavena", moja wersja java zmieni się automatycznie na 1.5. Również w powyższych krokach pierwsza wersja dwuetapowa również automatycznie zmieni się na 1.5. Jak mogę to naprawić?

Odpowiedz

97

Otwórz plik pom.xml i dodaj następujące linie na nim:

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

Gdzie 1.8 jest wersja Java bieżącej JDK/JRE. Innym sposobem osiągnięcia tego celu jest dodanie <build> z maven-compile-plugin jak

<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.2</version> <!-- or whatever current version --> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
    </plugin> 
</plugins> 
</build> 
+1

Myślę, że już zrobiłem drugą drogę i napisałem kod również. Nie widzisz, co zmieniłeś w tym kodzie – asdlfkjlkj

+0

Tak. Kiedy odpowiedziałem, nie publikujesz kodu. Dodaj pierwszą część mojej odpowiedzi. Znacznik "properties". Jeśli twój POM posiada już znacznik 'properties', po prostu dodaj znaczniki do niego, powinien działać poprawnie. –

+4

To nie działa. – asdlfkjlkj

1

miałem tego problemu. W moim przypadku znaczniki zagnieżdżone Jorge Campos wymienione powyżej były w niewłaściwym miejscu. Jeśli umieściłem je między znacznikami zależności i < w pliku pom.xml, zachowanie to zostało zatrzymane.

Można je pobrać z Eclipse, jeśli sprawdzanie poprawności tych plików jest włączone.

1

Napotykam podobny problem na jednym z moich kolegów z zespołu. Używał starej wersji Eclipse, wierzę, że używał Kepplera. Projekt po aktualizacji zmienia wersję JRE na 1.5.

Proste aktualizowanie Eclipse do najnowszej wersji rozwiązuje ten problem.

+0

Tak, nie. Używam Neona, moje ustawienia obszaru roboczego to wszystko 1.8, ale kiedy importuję (lub aktualizuję) projekt Maven, Eclipse nalega na używanie J2SE-1.5. – Antares42

+0

@ Antares42 Czy możesz budować z wiersza poleceń bez żadnych problemów? Którą wersję m2e używasz? – user902383

+1

Mogę budować przy użyciu wiersza poleceń (a raczej "Uruchom jako -> Maven build ...") bez problemów. Ale jak tylko wykonam "Maven -> Update project" otrzymam biblioteki JRE, jak wspomniano, a Eclipse nie zbuduje projektu. Nadal mogę budować przy użyciu Mavena. Kiedy dodam właściwość '' maven.compiler.source'', jak wspomniano w powyższej odpowiedzi, wszystko działa poprawnie. Moja wersja m2e to 1.7.1-20161104-1805. – Antares42

-3

Zmieniłem Eclipse z kepler na neon, a następnie zaktualizowałem swój projekt za pomocą Maven -> Update Project.

1

Dodaj te linie do pliku pom.xml, a następnie kliknij prawym przyciskiem myszy swoją bibliotekę systemową JRE -> Właściwości -> Ustaw poprawne środowisko wykonywania na wersję Java 1.8 lub wersję, którą chcesz ustawić.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.2</version> <!-- or whatever current version --> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
    </plugin> 
1

Korzeń-przyczyną tego problemu jest to, że jeśli jakiegokolwiek powodu Eclipse nie może rozwiązać ważny wartość właściwości maven.compiler.source podczas generowania/aktualizacji pliku .classpath z POM, to będzie po prostu domyślnych do korzystania z org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5.

Jako fachowo odpowiedział @jorge-campos, istnieje wiele sposobów, aby ustawić tę właściwość.

Jednak odpowiedź Jorge nie pojawiają do pracy dla mnie. Tu były moje ustawienia:

<properties> 
    <javaVersion>1.8</javaVersion> 
    <maven.compiler.source>${java.version}</maven.compiler.source> 
    <maven.compiler.target>${java.version}</maven.compiler.target> 
</properties> 

...

Dokładnie. ${java.version} jest nigdy zamiar rozwiązać na (całkowicie inny) właściwość javaVersion i Eclipse zignorował właściwość i użył domyślnej.

Co prowadzi mnie z powrotem do "z jakiegokolwiek powodu" część otworzyłem z; Głupota deweloperów może być jedną z tych przyczyn.