2012-07-31 33 views
12

Gần đây tôi đã tải xuống Eclipse Juno và cài đặt plugin Groovy mới nhất.Ngoại lệ java.lang.IncompatibleClassChangeError khi chạy Groovy trong Eclipse Juno

Bây giờ, đây là cách tệp Groovy của tôi trông như thế nào.

package groovy_support 

class TimePass { 
static void main(def args){ 
    println "Hello World" 
} 
} 

Khi tôi chạy ứng dụng này từ phiên bản nhật thực trước đó của tôi (indigo) hoặc từ dòng lệnh, nó chạy. Tuy nhiên, trên Eclipse Juno, nó phàn nàn với ngoại lệ sau đây trên bàn điều khiển Eclipse.

Caught: java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.ClassVisitor, but interface was expected 
java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.ClassVisitor, but interface was expected 

Lưu ý rằng "Groovy Libraries" đã có trên classpath.

Bây giờ tôi đang làm gì sai ở đây?

+0

Bạn đang sử dụng phiên bản groovy nào? Bạn có chắc chắn rằng phiên bản của groovy bạn đang biên dịch giống như phiên bản bạn đang chạy không? –

+0

Tôi đang sử dụng groovy 2.0.1 trên dòng lệnh. Trong Eclipse Juno, plugin của tôi hiển thị groovy-all-2.0 và asm 4.0. Trong Eclipse Indigo, plugin của tôi hiển thị giống nhau. :) – user898535

+0

Đoán của tôi là bạn đang biên dịch với phiên bản cũ hơn của groovy, nhưng đang chạy với phiên bản mới hơn. Bạn thấy phiên bản nào khi bạn vào Preferences -> Groovy -> Compiler? –

Trả lời

14

Bạn có đang sử dụng những chiếc lọ nhỏ/phụ thuộc mới nhất không? .

java.lang.IncompatibleClassChangeError xảy ra do sự cố tương thích ngược về phường. Mã khách hàng cần phải được biên dịch lại để giải quyết nó.

Lỗi cụ thể mà bạn đang thấy là vì org.objectweb.asm.ClassVisitorInterface trong mã asm 3.2 và Class trong asm 4.0 trở đi.

+0

tôi đang nhận được cùng một lỗi không phải trong máy địa phương của tôi khi tôi xây dựng nó trên jenkins. tôi loại trừ asm 3.2 từ POM của tôi nhưng vẫn nhận được rằng lỗi khi jenkins cố gắng chạy trình biên dịch maven một khi nó kết thúc chạy các bài kiểm tra tích hợp. – Venki

+0

Thats chính xác Ajay. Như đã đề cập trước đó, điều đó thực sự có vẻ là vấn đề. :) Và nó hoạt động theo gợi ý. Cảm ơn. :) – user898535

+0

Tuyệt vời. Xem xét chấp nhận câu trả lời bằng cách nhấp vào nút đánh dấu gần câu trả lời –

2

Tôi đã gặp vấn đề tương tự khi sử dụng Spring và Groovy trong một mô-đun. Mùa xuân trong 3.1.2 vẫn sử dụng ASM cũ hơn, Groovy sử dụng một lớp với lớp đó. Mặc dù có thể điều chỉnh một số loại trừ, tôi đặt cược nó không phải lúc nào cũng là một tùy chọn.

Sau khi đọc this thread Tôi quyết định làm với groovy-all.jar thay vì danh sách tất cả các thư viện cần thiết của Groovy. Nếu đó là một lựa chọn cho bạn, nó có thể là cách dễ dàng làm thế nào để tránh bất kỳ vấn đề nữa.

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