2009-07-14 35 views
57

những nguyên nhân có thể của một là gì "java.lang.Error: Vấn đề biên soạn Chưa giải quyết"?Java: Chưa giải quyết vấn đề biên soạn

thông tin bổ sung:

Tôi đã thấy điều này sau khi sao chép một tập hợp các tập tin JAR được cập nhật từ một xây dựng trên đầu trang của lọ hiện và khởi động lại ứng dụng. Các JAR được xây dựng bằng cách sử dụng một quá trình xây dựng Maven.

Tôi hy vọng sẽ thấy lỗi LinkageErrors hoặc ClassNotFound nếu giao diện thay đổi. Lỗi trên gợi ý một số vấn đề ở mức độ thấp hơn.

Một sạch xây dựng lại và tái triển khai khắc phục vấn đề. Lỗi này có thể chỉ ra một JAR bị hỏng không?

+0

Bạn đã làm gì để gây ra lỗi này? –

Trả lời

55

(viết lại 2015/07/28)

Hành vi mặc định của Eclipse khi biên dịch mã với các lỗi trong nó, là để tạo ra mã byte ném ngoại lệ mà bạn nhìn thấy. Điều này là có thể khi Eclipse sử dụng trình biên dịch dựng sẵn của riêng nó, thay vì javac từ JDK mà Apache Maven sử dụng. Nếu bạn sử dụng Eclipse trên một dự án Maven mà bạn cũng đang làm việc với việc sử dụng lệnh dòng lệnh mvn, điều này có thể xảy ra.

Cách khắc phục là sửa lỗi và biên dịch lại, trước khi chạy lại.

Các thiết lập được đánh dấu bằng một hộp màu đỏ trong screendump này:

Eclipse Preferences under OS X

+0

Đó không phải là trường hợp của tôi. Tôi đã thấy điều này sau khi triển khai các tệp JAR (xây dựng bằng Maven) cho một máy chủ. –

+1

Có thể đã xảy ra sự cố với cấu hình xây dựng Maven của bạn và nó đang sử dụng các tệp .class từ thư mục đầu ra eclipse của bạn. Nhưng dù sao, lần duy nhất tôi thấy lỗi đó là khi chạy mã với các lỗi biên dịch trong nhật thực. –

+0

Trong trường hợp đó, xây dựng maven của bạn rất có thể bị hỏng. Hãy thử làm sạch và biên dịch lại từ dòng lệnh, với Eclipse tắt. –

6

class được biên dịch của bạn có thể cần phải được biên dịch lại từ nguồn với các lọ mới.

Thử chạy "mvn sạch" và sau đó xây dựng lại

12

cố gắng để làm sạch các dự án thực

3

bạn chỉ cần cố gắng để làm sạch maven bởi lệnh

mvn clean 

và sau đó lệnh sau

mvn eclipse:clean eclipse:eclipse 

và xây dựng lại dự án của bạn ....

+0

Với chất lượng hiện tại (2015) của plugin m2e Eclipse, tôi sẽ đề xuất sử dụng Eclipse với thay vì các mục tiêu maven nhật thực khác nhau. –

1

Tôi gặp lỗi này khi tôi sử dụng cấu hình khởi chạy có đường dẫn lớp không hợp lệ. Trong trường hợp của tôi, tôi đã có một dự án ban đầu đã sử dụng Maven và do đó một cấu hình khởi chạy có một phần tử classpath Maven trong đó. Sau đó tôi đã thay đổi dự án để sử dụng Gradle và gỡ bỏ classpath Maven từ classpath của dự án, nhưng cấu hình khởi chạy vẫn sử dụng nó. Tôi gặp lỗi này khi cố chạy nó. Làm sạch và xây dựng lại dự án đã không giải quyết được lỗi này. Thay vào đó, hãy chỉnh sửa cấu hình khởi chạy, loại bỏ phần tử classpath của dự án, sau đó thêm dự án trở lại các mục nhập người dùng trong đường dẫn lớp.

1

tôi đã nhận lỗi này nhiều lần và phải vật lộn để tìm ra. Cuối cùng, tôi đã xóa cấu hình chạy và thêm lại các mục mặc định. Nó hoạt động rất đẹp.

1

Phần chính được trả lời chính xác bởi Thorbjørn Ravn Andersen.

Câu trả lời này cố gắng làm sáng tỏ câu hỏi còn lại: làm cách nào để tệp lớp có lỗi kết thúc trong bình?

Mỗi tín hiệu (mvn & javac hoặc nhật thực) theo cách cụ thể khi nó chạm lỗi biên dịch và sẽ từ chối tạo tệp Jar từ nó (hoặc ít nhất là cảnh báo bạn rõ ràng). Nguyên nhân có khả năng nhất để âm thầm nhận các tệp lớp có lỗi vào một cái lọ là do hoạt động đồng thời của Maven và Eclipse.

Nếu bạn có Eclipse mở trong khi chạy một mvn xây dựng, bạn nên vô hiệu hóa Dự án>Build Tự động cho đến khi mvn hoàn tất.

0

Đảm bảo bạn đã xóa các thư viện không có sẵn (tệp jar) khỏi đường dẫn xây dựng

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