2010-01-26 39 views
5

Tôi vừa sao chép mã Trình nghe khóa từ http://java.sun.com/docs/books/tutorial/uiswing/examples/events/KeyEventDemoProject/src/events/KeyEventDemo.java. Tôi đã có thể kết hợp nó với lệnh "javac". Nhưng khi tôi cố gắng để thực thi mã biên dịch (gõ "java KeyEventDemo") Tôi có một thông điệp lớn cuối cùng trong số đó tôi thấy:Tại sao Java không thể tìm thấy lớp chính?

Could not find the main class: KeyEventDemo. Program will exit. 

Hôm qua tôi đã có một similar problem trên Windows Vista (bây giờ tôi trên Ubuntu). Trong Windows, tôi có thể giải quyết vấn đề bằng cách gõ "java -cp. ProgramName" hoặc cách khác bằng cách thêm các giá trị mới ("." Và "..") vào biến môi trường "classpath".

Trên Ubuntu, giải pháp đầu tiên không hoạt động. Ý tôi là, khi tôi gõ "java -cp. KeyEventDemo" tôi vẫn gặp vấn đề. Hơn nữa, trên Ubuntu tôi đã có thể chạy các chương trình khác chỉ cần gõ "java ProgramName".

Vì vậy, bất kỳ ai cũng có thể cho tôi biết điều gì đặc biệt về KeyEventDemo này? Tại sao nó không wont để làm việc và làm thế nào nó có thể được giải quyết?

+0

Bạn chỉ có một tệp duy nhất, tại sao không xóa tên gói bây giờ? Nó hoạt động tốt cho tôi khi tôi loại bỏ điều đó. –

Trả lời

4

Đó là vì lớp KeyEvent nằm trong gói sự kiện.

Bạn phải xóa sự kiện gói ; dòng từ mã nguồn, hoặc biên dịch nó với:

javac -d . KeyEventDemo.java 
5

Chương trình này không nằm trong gói mặc định, nhưng trong gói "sự kiện": sử dụng java -cp . events.KeyEventDemo từ thư mục chứa thư mục "sự kiện":

 
    +work 
    +events 
    -KeyEventDemo.class 
7

Lớp KeyEventDemo là trong một gói events Để chạy nó, bạn phải nằm trong mẹ thư mục của thư mục events có chứa các lớp, và chạy nó sử dụng tên đầy đủ của nó, bao gồm các gói:

java events.KeyEventDemo 

Đường dẫn lớp phải chứa thư mục (hoặc JAR) là thư mục gốc của hệ thống phân cấp thư mục đại diện cho các gói; thư mục hiện tại là (tôi tin) được bao gồm tự động.

0

Có lẽ bạn biên dịch và chạy với phiên bản java khác nhau. Điều này là phổ biến khi bạn cố gắng thực hiện một ví dụ tại nhật thực.

+3

Chào mừng bạn đến với stackoverflow. Câu hỏi này đã được trả lời gần 3 năm trước và vấn đề đã được xác định. Lần tới, trước tiên hãy đọc câu trả lời hiện có và kiểm tra xem câu trả lời có được chấp nhận hay không trước khi bạn cung cấp câu trả lời cho câu hỏi cũ. – Rutix

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