Trình chỉnh sửa không chứa loại chính


92

Chỉ mới xem qua mã Scala mẫu trên trang web Scala, nhưng gặp phải lỗi khó chịu khi cố gắng chạy nó.

Đây là mã: http://www.scala-lang.org/node/45 . Khi chạy nó trên Eclipse, tôi nhận được thông báo này 'Trình chỉnh sửa không chứa loại chính' ngăn nó chạy.

Có bất cứ điều gì tôi cần làm ... tức là chia tệp đó thành nhiều tệp, hoặc những gì?

Câu trả lời:


37

Tôi gặp vấn đề này rất nhiều với Eclipse và Scala. Sẽ hữu ích nếu bạn dọn dẹp không gian làm việc và xây dựng lại Dự án của mình.

Đôi khi Eclipse không nhận ra chính xác tệp nào nó phải biên dịch lại :(

Chỉnh sửa: Mã chạy tốt trong Eclipse


4
Tạo ra trải nghiệm tương tự. Thêm vào đó, việc đóng và mở dự án dường như được yêu cầu đối với tôi đôi khi.
FabianLESg

Cảm ơn @nuriaion và @Fabian, vâng, việc mở lại dự án đã hoạt động. Cảm ơn một lần nữa cho lời khuyên của bạn.
Helen Neely

3
@Helen Trong Eclipse => Project => Clean bạn có thể dọn dẹp các dự án, việc xây dựng lại sẽ chạy tự động ... Vì vậy, bạn không cần phải đóng và mở lại dự án.
nuriaion 12/07/09

mở và đóng dự án scala cho tôi: Đã xảy ra lỗi trong quá trình xây dựng. Lỗi khởi tạo trình tạo 'ch.epfl.lamp.sdt.core.scalabuilder'. Trình cắm "ch.epfl.lamp.sdt.core" không thể khởi tạo lớp "scala.tools.eclipse.Builder". Không thể khởi tạo lớp scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder Plug-in "ch.epfl.lamp.sdt.core" không thể khởi tạo lớp "scala.tools.eclipse.Builder". Không thể khởi tạo lớp scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder
Ustaman Sangat

87

Trong Eclipse, đảm bảo rằng bạn thêm thư mục nguồn của mình trong thuộc tính dự án -> đường dẫn xây dựng java -> nguồn. Nếu không, hàm main () có thể không được đưa vào dự án của bạn.


Lưu ý rằng điều này cũng có thể được thực hiện bằng cách kéo và thả các tệp vào "src" trong chế độ xem trình khám phá thư mục.
Max von Hippel

Điều này đã giải quyết vấn đề của tôi nhưng sau khi đóng và mở dự án.
Nói

26

Bạn phải đảm bảo rằng các tệp .java của bạn nằm trong thư mục .src trong eclipse. Tôi đã có cùng một vấn đề chính xác cho đến khi tôi tìm ra nó.


26

Một cách đơn giản hơn là đóng dự án và mở lại.


21

Chỉ cần đảm bảo rằng thư mục bạn làm việc được thêm vào đường dẫn đã xây dựng:

right-clickthư mục của bạn -> build Path->Use as source Folder

và bây giờ nó sẽ tìm thấy maintrong đó.


6

Tôi đã từng gặp vấn đề tương tự. Tôi đã thử tất cả các loại. Và tôi đã biết rằng

  1. Các tệp .java của tôi không được liên kết và
  2. chúng không được đặt trong thư mục 'src'.

Những điều tôi đã làm:

Thuộc tính dự án >> Đường dẫn xây dựng Java >> Nguồn

  • Đã xóa thư mục 'src' ban đầu trống bằng tùy chọn 'Xóa'
  • Đã thêm nguồn chứa tệp .java nguồn của tôi bằng cách sử dụng tùy chọn 'Thêm thư mục'

Điều này đã giải quyết được lỗi.


5

Bạn có thể thử chạy chức năng chính từ thanh bên phác thảo của nhật thực.

giải pháp


Khi tôi làm điều này, tôi nhận được một thông báo lỗi: <project root> [in Tut_RMI] does not exit. (Tên dự án là Tut_RMI) Tên dự án này có hợp lệ không?
Casper

5
***

Chỉ cần đóng và mở lại

*** dự án của bạn trong nhật thực. Đôi khi có vấn đề liên kết. Điều này đã giải quyết vấn đề của tôi


3

Một giải pháp nhanh chóng:

Đầu tiên, loại trừ gói: Nhấp chuột phải vào gói nguồn >> Đường dẫn xây dựng >> Loại trừ

Sau đó đưa nó trở lại: Nhấp chuột phải vào gói nguồn >> Đường dẫn xây dựng >> Bao gồm


3

Những gì bạn nên làm là, tạo một Dự án Java, nhưng hãy đảm bảo rằng bạn đặt tệp này trong tệp gói của dự án đó, nếu không bạn sẽ gặp phải lỗi tương tự.

nhập mô tả hình ảnh ở đây


2

Mã đó hợp lệ. Bạn đã thử biên dịch nó bằng tay bằng scalac chưa? Ngoài ra, bạn đã gọi tệp của mình là "sổ địa chỉ", tất cả đều là chữ thường, giống như tên của đối tượng?

Ngoài ra, tôi thấy rằng Eclipse, vì một số lý do, đặt lớp chính là ".addressbook" thay vì "addressbook".


Cảm ơn Daniel, có tập tin được đặt tên là 'sổ địa chỉ' tất cả là chữ thường. Sẽ thử mở lại dự án để xem có giúp ích được gì không.
Helen Neely

2

bạn nên tạo tệp của mình bằng

chọn ở phía bên phải, bạn sẽ tìm thấy tên tệp của mình,

dưới đó sẽ tìm thấy thư mục src của họ, bạn nhấp chuột phải vào chọn -> tùy chọn lớp

họ nên tạo tệp của bạn


2

Đảm bảo rằng tệp .java của bạn có trong gói str hoặc trong một số gói khác. Nếu tệp java có chức năng chính nằm ngoài tất cả các gói, lỗi này sẽ xảy ra.


2

Đã gặp phải vấn đề tương tự, hãy giải quyết vấn đề này bằng cách nhấp chuột phải vào phương thức chính trong dạng xem phác thảo và chạy dưới dạng ứng dụng Java.


1

Tôi cũng vừa gặp vấn đề này. Giải pháp là đảm bảo rằng eclipse đã tạo dự án dưới dạng dự án Java. Chỉ cần tạo một dự án Java mới và sao chép lớp của bạn vào thư mục src (và nhập các phụ thuộc cuối cùng). Điều này sẽ khắc phục sự cố.


Cảm ơn KullDox, cho nhận xét của bạn. Tôi đã giải quyết vấn đề từ lâu nhưng hy vọng ai đó khác thấy các giải pháp ở đây hữu ích.
Helen Neely

1

Câu trả lời đúng là: thư viện Scala cần có trước thư viện JRE trong đường dẫn xây dựng.

Đi tới Java Buildpath> Order and Export và di chuyển thư viện Scala lên trên cùng


1

Tôi đã gặp sự cố này với một dự án Java mà tôi đã nhập từ hệ thống tệp (trong Eclipse Helios). Đây là một gợi ý: mã src dường như không được biên dịch, vì không có thư mục "bin" nào hiển thị.

Tôi phải tạo một dự án Java từ đầu (sử dụng trình hướng dẫn), sau đó so sánh các .projecttệp của các dự án không hoạt động và đang hoạt động.

Dự án cung cấp "Trình chỉnh sửa không chứa loại chính" có cái này là "buildSpec" trong tệp .project:

<buildSpec>
</buildSpec>

Nhưng dự án làm việc có cái này là "buildSpec":

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

Tôi đã sao chép điều này vào và dự án đã nhập hoạt động.

Tôi biết câu trả lời của tôi là dành cho Java, nhưng vấn đề tương tự cũng có thể xảy ra đối với dự án Scala của bạn.


1

Có thể tệp bạn đã tạo nằm ngoài thư mục src (source). Cố gắng gọi đối tượng lớp (từ tệp nằm trong thư mục src) từ tệp .java bên ngoài thư mục nguồn dẫn đến cùng một lỗi. Sao chép tệp .java vào thư mục nguồn, sau đó tạo nó. Lỗi sẽ biến mất.


1

Tôi đã từng gặp vấn đề tương tự. Tôi đã có lớp chính trong gói src, trong thư mục khác. Tôi di chuyển nó vào và đúng thư mục và giải quyết


1

chạy "eclipse -clean -refresh" từ dòng lệnh. Điều này đã khắc phục sự cố cho tôi khi tất cả các giải pháp khác không thành công.


1

Đây có thể là vấn đề với đường dẫn Java Build. Hãy thử các bước dưới đây:

  1. Chuyển đến thuộc tính dự án
  2. Đi tới Đường dẫn xây dựng java
  3. Chuyển đến tab Nguồn và thêm thư mục src của dự án

Điều này sẽ giải quyết vấn đề.


1

Nếu đó là dự án maven, vui lòng kiểm tra tệp java được tạo theo src / main / java

Nếu bạn không nhận được, vui lòng thay đổi đường dẫn JRE và tạo tệp java trong cấu trúc thư mục trên


0

Đối với tôi, trong Eclipse 3.6, sự cố này xảy ra khi phương thức chính của tôi không công khai. Tôi đã gây ra sự cố bằng một phương thức chính như sau:

static void main(String[] args) 

Dubugger không thể tự phát hiện ra điều này. Tôi khá ngạc nhiên khi Eclipse đã bỏ qua điều này.


0

Trong trường hợp xấu nhất - hãy tạo lại dự án một lần nữa với tất cả các lần nhập từ đầu. Trong trường hợp của tôi, không có tùy chọn nào khác hoạt động. Loại lỗi này gợi ý rằng có lỗi trong cài đặt dự án. Tôi đã từng giải quyết được nó, nhưng sau khi phát triển thêm, lỗi lại quay trở lại. Việc tạo lại mọi thứ từ đầu đã giúp tôi hiểu và tối ưu hóa một số liên kết, và bây giờ tôi tự tin rằng nó hoạt động chính xác.


0

Làm theo các bước sau:

  1. Sao lưu tất cả các tệp .java của bạn sang một số vị trí khác
  2. xóa toàn bộ dự án java
  3. Tạo dự án java mới bằng cách nhấp chuột phải vào root và nhấp vào mới
  4. khôi phục tất cả các tệp vào vị trí mới !!

0

Tệp >> Nhập >> Dự án hiện có vào Workspace >> Chọn Archive Filed >> Duyệt và định vị tệp >> Kết thúc. Nếu nó đã được nhập theo một số cách khác, hãy xóa nó và thử theo cách đó. Tôi đã gặp vấn đề tương tự cho đến khi tôi thử nó.


0

Một điều nữa cần kiểm tra: đảm bảo rằng tệp nguồn của bạn chứa đúng khai báo gói tương ứng với thư mục con mà nó nằm trong đó. Có thể thấy lỗi được OP đề cập khi cố gắng chạy "loại chính" được khai báo trong tệp trong thư mục con nhưng thiếu câu lệnh gói.


0

Tôi cũng gặp sự cố này sau khi tôi thay đổi thư mục nguồn. Giải pháp hiệu quả là chỉ cần chỉnh sửa tệp và lưu nó.


0

Hãy thử 'Cập nhật dự án'. Sau khi tôi làm điều này, tùy chọn Chạy như ứng dụng Java xuất hiện.


0

Trong trường hợp 'Hello World' cụ thể của tôi, nguyên nhân cho vấn đề này là thực tế, main()phương pháp của tôi nằm trong Scala class.

Tôi đặt main()phương thức dưới Scala objectvà lỗi đã biến mất.

Đó là bởi vì Scala objecttrong thuật ngữ Java là thực thể chỉ có các thành viên và phương thức tĩnh bên trong.

Đó là lý do tại sao Java's public static void main()trong Scala phải được đặt dưới object.

(Scala classcó thể không chứa tĩnh bên trong)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.