2010-03-29 48 views
18

Tôi đã triển khai thành công và chạy một số hướng dẫn Scala trong Eclipse bằng cách sử dụng plugin Scala. Sau đó đột nhiên tôi đã cố gắng biên dịch và chạy một ví dụ, và lỗi này xuất hiện:noClassDefFoundError sử dụng Plugin Scala cho Eclipse

Exception in thread "main" java.lang.NoClassDefFoundError: hello/HelloWorld 
Caused by: java.lang.ClassNotFoundException: hello.HelloWorld 
at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:315) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:250) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398) 

Sau thời điểm này tôi không còn có thể chạy bất kỳ chương trình Scala nào trong Eclipse. Tôi đã thử làm sạch và xây dựng lại dự án của mình, đóng và mở lại dự án của tôi, và đóng và mở lại Eclipse.

Eclipse phiên bản số 3.5.2 và Scala Plugin 2.8.0

Đây là mã gốc:

package hello 

object HelloWorld { 
def main(args: Array[String]){ 
    println("hello world") 
} 
} 
+0

Có tệp HelloWorld.class bên trong $ PROJECT/bin/hello không? (Bạn có thể sử dụng chế độ xem "Điều hướng" để kiểm tra). –

Trả lời

10

Nếu bạn thấy điều này khi bạn cố gắng chạy như một ứng dụng Scala thì rất có thể giải thích là dự án của bạn không biên dịch và không có tệp lớp nào được tạo. Vui lòng kiểm tra xem trường hợp đó có xảy ra hay không: hãy xem thư mục đầu ra của dự án của bạn cho hello/HelloWorld.class.

Nếu dự án của bạn không biên dịch có thể do lỗi bạn đã bỏ sót (và nếu lỗi này không được báo cáo trong chế độ xem Sự cố có thể là lỗi, trong trường hợp này, vui lòng mở vé trên Trac) hoặc vì bạn đã tắt tự động xây dựng và không thực hiện xây dựng thủ công dự án của bạn.

+0

Không có tệp nào trong thư mục đầu ra. Rất tiếc, tôi đã cài đặt lại môi trường của mình hôm qua để có được mọi thứ hoạt động nên tôi không thể khắc phục sự cố. –

+0

Đối với tôi có vẻ như cấu hình chạy bằng cách nào đó bị hỏng hoặc không được đặt chính xác, nhưng tôi đã tìm thấy "giải pháp" - xem bên dưới –

+1

Tôi gặp vấn đề tương tự: HelloWorld $ .class nằm trong thư mục đầu ra nhưng không có HelloWorld. lớp học. Vệ sinh đã giải quyết được vấn đề. – thSoft

2

Khi chạy "sạch" không tháo gỡ Eclipse, tôi tiếp theo thử lưu công việc của tôi, thoát khỏi Eclipse và bắt đầu lại. Điều đó thường khiến mọi việc trở lại, nhưng không phải lúc nào cũng vậy. Một vài lần tôi đã phải cập nhật các plugin Scala với một phiên bản mới hơn (tôi đang sử dụng hàng đêm mới nhất), để có được những thứ làm việc trở lại. Tôi nghi ngờ rằng điều này làm việc bởi vì các plugin mới đã xảy ra để sửa lỗi, nhưng thay vì mong đợi rằng tải các plugin mới cho toàn bộ hệ thống Eclipse-Scala một "tổng thiết lập lại" mà nó được unhosed.

3

Tôi đã gặp vấn đề tương tự. Dự án không biên dịch nhưng không có lỗi được đánh dấu và AFAIK mã là OK. Nó có vẻ là một vấn đề với Run Configurations.

Giải pháp 1: Xóa Run Cấu hình hiện tại cho đối tượng của bạn và tạo ra một cái mới

Giải pháp 2: Tạo một đối tượng mới và cắt/dán tất cả các mã của bạn vào tập tin đó

0

tôi đã chuyển lớp và đối tượng/ứng dụng của tôi và chỉ vào một gói, nhưng chưa thêm tuyên bố package.

sbt được biên dịch và chạy tốt; eclipse sẽ không

Thêm tuyên bố package ở đầu tệp đã sửa nó.

Scala 2.8.3 plugin; không có lỗi biên dịch

1

Tôi đã gặp sự cố này trong một dự án kết hợp .java & tệp .scala. Các giải pháp đối với tôi là:

  1. Remove tất cả các file java
  2. Chỉnh sửa mã scala khi cần thiết nên nó biên dịch mà không có họ.
  3. Thêm tệp .java vào.
  4. Chỉnh sửa mã scala trở lại.

Các giải pháp khác được cung cấp ở đây không hiệu quả đối với tôi. Tôi đã thử: làm sạch dự án, khởi động lại Eclipse, đóng- & -opening dự án, tạo một tệp .scala mới. Không vui.

Tôi đang sử dụng Eclipse 3.7 (ổn định mới nhất), Scala IDE 2.0.0 và Scala 2.9 trên Ubuntu Linux 11.10.

Các triệu chứng trong trường hợp của tôi là:

  • Dự án của tôi làm việc, nhưng sau đó nó dừng biên dịch không có lý do rõ ràng. IDE không hiển thị bất kỳ lỗi biên dịch nào cho tệp .scala, nhưng không có tệp .class trong thư mục đầu ra & Tôi nhận được NoClassDefError nếu tôi cố gắng chạy bất cứ thứ gì.
  • Nếu tôi đã tạo lỗi cố ý trong tệp .scala, lỗi đó đã bị chọn làm lỗi biên dịch.
  • Tệp .java đã đăng ký lỗi do các lớp scala bị thiếu.

Tôi cho rằng có thể có lỗi khởi động ở đâu đó trong plugin IDE cho hỗn hợp .java/.scala. Tôi đã thực hiện các dự án lai với thiết lập này mà không có vấn đề gì, vì vậy nó chỉ được kích hoạt trong một số trường hợp. Tôi không biết kích hoạt là gì, nhưng một khi được kích hoạt, không có giải pháp tốt đẹp.

0

Tôi gặp phải lỗi này nhưng sau khi thực hiện các đề xuất ở đây (làm sạch, xóa Cấu hình chạy, v.v), tôi nhận ra rằng tôi đã đặt sai không gian làm việc đó là lý do lớp không được tìm thấy.

Một dấu hiệu cho thấy đây là vấn đề khi xảy ra lỗi tương tự khi bạn cố biên dịch một dự án java.

0

Tôi gặp phải lỗi này (biên dịch làm việc trong sbt nhưng thất bại trong nhật thực) khi tôi tạo một đối tượng gói mới có tên "chung". Xóa đối tượng gói trong nhật thực khiến lỗi biên dịch biến mất. Không có gì trong đó.

Tôi đã sử dụng sbt-eclipse để tạo dự án nhật thực. Tôi đang sử dụng scala eclipse 3.0.0-vfinal-20130326-1146-Typesafe.

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