2012-11-08 49 views
11

Khi tôi xây dựng và chạy chương trình của mình trong Netbeans, nó hoạt động mà không có vấn đề gì. Nhưng với tập tin pom.xml cùng khi tôi cố gắng "mvn biên dịch" Tôi nhận được lỗi này:Lỗi biên dịch Maven

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project hadoop-test: Compilation failure 
[ERROR] /home/metin/NetBeansProjects/hadoop-test/src/main/java/com/citusdata/hadoop/HadoopTest.java:[53,8] error: generics are not supported in -source 1.3 

phiên bản java của tôi là không 1.3, đây là kết quả của "mvn -version"

Apache Maven 3.0.4 
Maven home: /usr/share/maven 
Java version: 1.7.0_03, vendor: Oracle Corporation 
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux", version: "3.2.0-27-generic", arch: "amd64", family: "unix" 

và đây là dòng 53:

Token<BlockTokenIdentifier> token = locatedBlock.getBlockToken(); 
+0

Bạn có chỉ định một plugin trình biên dịch cụ thể không? Có gì khác trong pom của bạn? – bluesman

Trả lời

21

Vấn đề là maven-compiler-plugin trong Maven2 theo mặc định sử dụng -source 1.3target 1.3

Bạn có thể sửa chữa nó bằng cách thêm này để pom của bạn:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
     <compilerVersion>1.5</compilerVersion> 
     <source>1.5</source> 
     <target>1.5</target> 
     </configuration> 
    </plugin> 

đó là thực tế để đưa điều này vào pluginManagement phần trong pom mẹ trên cùng của bạn để poms nguồn gốc của bạn không cần phải quan tâm đến điều này.

+0

Điều này đã giải quyết được vấn đề của tôi, nhưng tại sao Netvn hoạt động? – metdos

+0

Không chắc chắn, tôi không phải là người dùng NetBeans, nhưng có lẽ NB thêm một số thuộc tính (như 'maven.compiler.source',' maven.compiler.target') hoặc thực thi phiên bản mới hơn của trình biên dịch-maven-plugin đã có giá trị của '1.5' làm mặc định - http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#source –

+1

Phiên bản maven của tôi là 3.0.4. Làm thế nào sẽ kết thúc bằng cách sử dụng một maven-compiler-plugin cũ? – metdos

5

Bạn phải thêm một số thông tin trong tệp pom.xml của mình. Một cái gì đó như thế:

<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> 
1

Trong nhật ký của bạn, tôi thấy dòng này:

generics are not supported in -source 1.3 

Kiểm tra nguồn gốc và cấu hình mục tiêu của maven-biên dịch plug-in, và cập nhật nó đến 1,5.

0

Dường maven java nhà quan điểm của bạn đến một jre không JDK

Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre 

Bạn cần phải thay đổi nó thành một jdk.

Hãy thử java -version và thấy là những gì có

sử dụng /usr/sbin/alternatives --config java để thay đổi phiên bản java của bạn.

0

Đây là một cách hơi khác để sửa lỗi tương tự trong Eclipse Indigo.

  • Mở dự án (maven) của bạn trong Eclipse.
  • nhấp chuột phải vào pom.xml
  • chọn ... Maven ... Thêm Plugin
  • Enter:

    - groupId: org.apache.maven.plugins 
        - artifactId: maven-compiler-plugin 
        - version: 2.3.2 
    

này sẽ chèn một phần mới trong pom.xml của bạn và mở một cửa sổ để chỉnh sửa.

Sau đó, bạn có thể thêm phần tử nguồn và mục tiêu xml như được mô tả ở trên để chọn đúng JRE.

Phần trông như thế này trong dự án của tôi:

<build> 
    <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> 
</build> 

Lưu ý các thẻ phụ cho "xây dựng" và "plugins" vắng mặt trong một số bài viết khác.

Khi bạn lưu tệp, Eclipse sẽ thông báo cho bạn rằng pom của bạn không đồng bộ với dự án của bạn.

Sau đó bạn có thể nhấp chuột phải chọn dự án ... Dự án Maven..update

Một cái nhìn sâu sắc quan trọng đối với tôi là Maven sẽ tự động tái thiết lập đường dẫn xây dựng trong Eclipse. Mà bạn có thể xác minh bởi dự án ... xây dựng path..configure xây dựng đường dẫn ... Thư viện. Vì vậy, về cơ bản điều này có nghĩa là bạn không cần phải gây rối với việc cấu hình trực tiếp đường dẫn xây dựng trong Eclipse nếu bạn đang sử dụng một dự án Maven.

HTH