2011-08-11 64 views
28

Khi chạy bản Maven của chúng tôi, một thành viên trong nhóm của tôi bị lỗi this khi thực thi. Tuy nhiên, khi chúng ta chạy java -version từ dòng lệnh của mình, nó chỉ ra Java 1.6.0_26. Lỗi rõ ràng dường như la hét rằng Maven đang sử dụng Java 5.Làm cách nào để tìm ra và thay đổi phiên bản Java Maven nào đang sử dụng để thực thi?

Làm cách nào để tìm ra và thay đổi phiên bản Java nào đang được Maven sử dụng?

ghi chú

3 có khả năng quan trọng:

  1. này được thực hiện tại cửa sổ dòng lệnh, không sử dụng Eclipse Plugin
  2. JAVA_HOME được đặt thành một Java 1.6 JDK
  3. Sử dụng Maven 2.2.1
+0

Dường như JDK 1.6.0_26 được sử dụng để biên dịch nguồn của bạn với 1.5. Điều này là khả thi! –

+4

eek! :("lỗi này" liên kết đã bị hỏng – Barett

Trả lời

54

mvn -version sẽ xuất java nó đang sử dụng. Nếu JAVA_HOME được đặt thành một thư mục JDK hợp lệ và Maven đang sử dụng một cái gì đó khác, thì rất có thể ai đó đã giả mạo với cách Maven khởi động.

+1

Bạn có thể định nghĩa Java sẽ được sử dụng với maven.Xem luồng: http: // stackoverflow.com/questions/18813828/why-maven-use-jdk-1-6-nhưng-my-java-version-is-1-7 –

7

Bạn sẽ cần định cấu hình maven-compiler-plugin để sử dụng tham số 1,6 sourcetarget (theo mặc định là 1,5).

Điều này được thực hiện tốt nhất trong phụ huynh của dự án của bạn trong phần <pluginManagment> (nhưng bạn luôn có thể định cấu hình nó cho mỗi dự án riêng lẻ).

<build> 

    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 

      </configuration> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
1

mvn -version cho bạn biết trình biên dịch Maven đang sử dụng, vì vậy đây trả lời câu hỏi trừ POM mà bạn chỉ định giá trị ghi đè cho các phiên bản được sử dụng.

Dưới đây là cách dễ nhất để xác định ghi đè trong pom.xml:

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

Ngoài ra, maven-compiler-plugin có thể được xác định một cách rõ ràng hơn. Trong trường hợp đó, hãy xem các giá trị <source><target> được liên kết với plugin.

Cả hai tùy chọn này đều được mô tả here.

Nếu POM của bạn có <parent>, thì bạn cũng cần kiểm tra điều đó (đệ quy).

Lưu ý: Khi chỉ định sourcetarget, các giá trị này được chuyển thành tùy chọn dòng lệnh cho trình biên dịch. Sử dụng tính năng này, bạn có thể biên dịch hoặc chạy với các phiên bản Java cũ hơn giá trị danh nghĩa của trình biên dịch.

+0

Ví dụ về cách đặt trình biên dịch * nếu bạn không muốn đơn giản sử dụng 'javac' từ đường dẫn của bạn:' JAVA_HOME =/usr/lib/jvm/java-8-openjdk-amd64 mvn clean install'. Số dặm của bạn có thể thay đổi theo cách thức/khi nào điều này có thể bị ghi đè trong Maven. – nobar

+0

Khi kiểm tra độ chính xác cuối cùng, bạn có thể yêu cầu 'javac' /' java' từ bên trong môi trường xây dựng bằng cách thiết lập các tham số xây dựng để thêm '-version' vào đối số dòng lệnh - tương tự như [ở đây] (https://stackoverflow.com/a/25079415/86967) (cho Gradle). – nobar

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