2015-02-13 16 views
46

Tôi đang sử dụng nhật thực làm IDE. Khi tôi nhấp chuột phải vào dự án và sau đó bấm maven cập nhật phiên bản java của tôi thay đổi thành 1.5. Đây là những gì tôi đã làm cho đến nay, tôi theo tất cả các bước được liệt kê ở đâyPhiên bản Java tự động thay đổi thành java 1.5 sau khi cập nhật maven

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

  1. tôi đã thay đổi "xây dựng Java đường" thành "không gian làm việc mặc định jre 1.8.0_25"
  2. Sau đó thay đổi "trình biên dịch java "đến 1,8
  3. Sau đó thay đổi "khía cạnh dự án"> java> 1,8
  4. phiên bản đã thay đổi pom.xml java để 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> 

Sau khi tất cả điều này khi tôi bấm vào "Cập nhật Maven" phiên bản java của tôi thay đổi thành 1.5 tự động. Cũng trong các bước trên, phiên bản đầu tiên của hai bước cũng thay đổi thành 1,5 tự động. Làm thế nào tôi có thể sửa lỗi này?

Trả lời

97

Mở tập tin pom.xml của bạn và thêm các dòng sau vào nó:

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

đâu 1.8 là phiên bản java của JDK hiện tại của bạn/JRE. Một cách để làm điều này là thêm một <build> với maven-compile-plugin như

<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

Tôi nghĩ rằng tôi đã làm theo cách thứ hai và tôi cũng đã đăng mã. Không thấy những gì bạn đã thay đổi trong mã đó – asdlfkjlkj

+0

Vâng. Khi tôi trả lời bạn chưa đăng mã. Vì vậy, thêm phần đầu tiên của câu trả lời của tôi. Thẻ 'properties'. Nếu POM của bạn đã có một thẻ 'properties' chỉ cần thêm các thẻ bên trong nó, nó sẽ hoạt động tốt. –

+4

Tính năng này không hoạt động. – asdlfkjlkj

1

Tôi có vấn đề này. Trong trường hợp của tôi, các thuộc tính < > thẻ & các thẻ lồng nhau Jorge Campos được đề cập ở trên không đúng chỗ. Nếu tôi đặt chúng giữa <hostversion> và < phụ thuộc > thẻ trong tệp pom.xml, thì hành vi này dừng lại.

Điều đó có thể được chọn trong Eclipse nếu việc xác thực các tệp này được bật.

1

Tôi gặp phải vấn đề tương tự trên một trong các máy giao phối đồng đội của tôi. Ông ấy đang sử dụng phiên bản cũ của Eclipse, tôi tin rằng ông ấy đang sử dụng Keppler. Dự án sau khi cập nhật phiên bản JRE thay đổi thành 1.5.

Cập nhật đơn giản Eclipse với phiên bản mới nhất giải quyết vấn đề này.

+0

Vâng, không. Tôi đang chạy Neon, cài đặt không gian làm việc của tôi là tất cả 1,8, nhưng khi tôi nhập (hoặc cập nhật) một dự án Maven, Eclipse nhấn mạnh vào việc sử dụng J2SE-1.5. – Antares42

+0

@ Antares42 là bạn có thể xây dựng từ dòng lệnh mà không có bất kỳ vấn đề? Bạn đang sử dụng phiên bản m2e nào? – user902383

+1

Tôi có thể xây dựng bằng cách sử dụng dòng lệnh (hoặc đúng hơn là "Chạy dưới dạng -> Maven xây dựng ...") mà không gặp sự cố. Nhưng ngay sau khi tôi làm "Maven -> Cập nhật dự án" tôi nhận được các thư viện JRE như đã đề cập và Eclipse không xây dựng dự án. Tôi vẫn có thể xây dựng bằng cách sử dụng Maven. Khi tôi thêm thuộc tính '' maven.compiler.source'' như đã đề cập trong câu trả lời ở trên, mọi thứ đều hoạt động tốt. Phiên bản m2e của tôi là 1.7.1-20161104-1805. – Antares42

-3

Tôi đã thay đổi Eclipse từ kepler thành neon và sau đó cập nhật dự án của tôi bằng Maven -> Cập nhật dự án.

1

Thêm dòng này vào tệp pom.xml của bạn, sau đó nhấp chuột phải vào Thư viện hệ thống JRE -> Thuộc tính -> Đặt môi trường thực thi chính xác của bạn thành Java 1.8 hoặc phiên bản bạn muốn đặt.

<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

rễ nguyên nhân của vấn đề này là nếu vì lý do nào của Eclipse không thể giải quyết một giá trị hợp lệ cho maven.compiler.source tài sản khi tạo/cập nhật các tập tin classpath từ pom, nó sẽ chỉ đơn giản là mặc định để sử dụng org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5.

Được trả lời một cách chuyên nghiệp bởi @jorge-campos, có nhiều cách để đặt thuộc tính đó.

Tuy nhiên, câu trả lời của Jorge không xuất hiện để làm việc cho tôi. Dưới đây là các thiết lập của tôi:

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

...

Chính xác. ${java.version}không bao giờ sẽ chuyển sang thuộc tính (hoàn toàn khác) javaVersion và Eclipse đã bỏ qua thuộc tính và sử dụng giá trị mặc định.

Điều này đưa tôi quay lại "vì bất kỳ lý do nào" phần tôi đã mở bằng; nhà phát triển ngu ngốc có thể là một trong những lý do đó.

Các vấn đề liên quan