2012-08-30 32 views
5

Tôi nhận được lỗi biên dịch khi biên dịch bằng maven nhưng hoạt động trong nhật thực. Cả hai đều sử dụng JDK cùng:Lỗi biên dịch maven sai (hoạt động trong nhật thực)

java -version 
java version "1.6.0_35" 
Java(TM) SE Runtime Environment (build 1.6.0_35-b10) 
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01, mixed mode) 

mvn -version 
Apache Maven 3.0.4 
Maven home: /usr/share/maven 
Java version: 1.6.0_35, vendor: Sun Microsystems Inc. 
Java home: /usr/lib/jvm/jdk1.6.0_35/jre 
Default locale: es_ES, platform encoding: UTF-8 
OS name: "linux", version: "3.2.0-29-generic", arch: "amd64", family: "unix" 

Đây là lỗi:

[ERROR] /blablabla.../myClass.java: [78,107] inconvertible types 
[ERROR] found : java.util.Collection<java.lang.Object> 
[ERROR] required: java.util.Collection<? extends org.springframework.integration.store.MessageGroup> 
[ERROR] -> [Help 1] 

Và đây là đoạn code (không có lỗi biên soạn trong eclipse):

Collection<? extends MessageGroup> collection = (Collection<? extends MessageGroup>) this.groupMap.values(); 

Tôi biết rằng điều này là một vấn đề khá đệ quy, tôi đã tìm thấy một vài bài viết yêu cầu giống nhau, nhưng có vẻ như không ai sửa lỗi. Một số người nói rằng làm việc với phiên bản JDK khác nhau. Tôi đã thử nghiệm với 1.6.0_30, 1.6.0_31, 1.6.0_32 và 1.6.0_35 và tất cả đều thất bại.

Bất kỳ ý tưởng nào?

Cảm ơn

+0

Bạn có đang đặt phiên bản nguồn và đích của plugin trình biên dịch không? Xem http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html – beny23

+1

Có -> 1.6 1.6 Curro

+1

Eclipse không sử dụng trình biên dịch từ JDK. Nó chỉ cần tham chiếu đến JDK cho các thư viện! Vì vậy, hoàn toàn có thể là trình biên dịch Maven chấp nhận một số mã trong khi trình biên dịch JDK (mà Maven sử dụng theo mặc định) thì không. Và hầu hết khi tôi nhìn thấy hai sự phân tán đó, trình biên dịch Eclipse là một trình biên dịch chuẩn. –

Trả lời

14

Tôi nghi ngờ nhật thực hiện không sử dụng JDK mà bạn nghĩ. Hãy thử sử dụng loại xóa.

Collection<? extends MessageGroup> collection = 
     (Collection<? extends MessageGroup>) 
       (Collection) this.groupMap.values(); 
+0

Double checked JRE được cài đặt và xây dựng đường dẫn trong nhật thực ... như mong đợi là như nhau (1.6.0_35). Dù sao .... loại tẩy xóa công trình !!! Cảm ơn rất nhiều!! – Curro

+0

Tôi biết về loại tẩy xóa như là một khái niệm trong quá trình biên dịch, nhưng không phải là một kỹ thuật mã hóa rõ ràng. Cảm ơn câu trả lời, đó là những gì tôi cần. –

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