Lỗi: Không thể tìm hoặc tải lớp chính trong intelliJ IDE


151

Tôi là người mới bắt đầu sử dụng Java và đang cố chạy mã của mình bằng IntelliJ mà tôi vừa cài đặt làm IDE với JDK 1.7. Đoạn mã sau đây thậm chí không biên dịch và tiếp tục báo lỗi cho tôi:

Error: Could not find or load main class libTest

import java.lang.Integer;
import java.lang.String;
import java.lang.System;
import java.util.*;

class book {

    private String name = "trial";
    private int bookCode=1;
    private int issued=0;

     public void Issue(){
         if(issued==0) {
             issued=1;
             System.out.println("You have succesfully issued the book");
         }
         else {
             System.out.println("The book is already issued. Please contact the librarian for further details");
         }
    }

    public int checkCode() {
        return bookCode;
    }

    String readName() {
        return name;
    }

    public void setName(String newName){
        name=newName;
    }

    public void setBookCode(int newCode){
        bookCode=newCode;
    }
}

class library {
    private ArrayList books=new ArrayList();

    public void getList(){
        for(int bk:books){
            String bName=books(bk).readName();
            System.out.println((bk+1)+")  "+bName);
        }
    }
}

public class libTest{
    public static void main(String[] args){
        library newLib= new library();
        System.out.println("code working");
   }
}

Có bất kỳ thay đổi mà tôi phải thực hiện trong cài đặt trình biên dịch không ?? Hoặc là mã.


2
Tên của tệp nguồn là gì? Phải libTest.javakhông
QuantumMechanic

import java.lang...Điều này xảy ra tự động cho các lớp trong langgói.
Andrew Thompson

Như được đề cập bởi QuantumMechanic, lớp chính của bạn cần nằm trong một tệp có tên chính xác như nó. Vì vậy libTest cần phải nằm trong tệp java có tên libTest.java, nếu không trình biên dịch java sẽ khiếu nại. Ngoài ra, bạn đã tạo nguồn thông qua IDEA hay bạn đã tạo một dự án IDEA mới trên nguồn hiện có?
mcfinnigan

đã thử nhập java.lang không có sự khác biệt
thư bối rối

chúng giống hệt nhau Có bất kỳ lý do khác tại sao một lỗi như vậy nên được gắn cờ?
thư bối rối

Câu trả lời:


177

Điều này có thể giúp:

1) Menu "Xây dựng" -> " Rebuild Project". Đôi khi Intellij không viết lại các lớp vì chúng đã tồn tại, theo cách này bạn yêu cầu Intellij viết lại mọi thứ.

2) Menu "Chạy" -> " Edit configuration" -> xóa hồ sơ -> thêm lại hồ sơ ("Ứng dụng" nếu đó là ứng dụng Java), chọn lớp chính của bạn từ menu thả xuống "Lớp chính".

3) Menu "Xây dựng" -> " Rebuild Project".


9
Tôi đã có một dự án hoàn toàn mới ở IntelliJ và nó sẽ không chạy. Rebuild Projectđã làm cho tôi!
Daniel Harding

Lựa chọn thứ 2 làm việc cho tôi. Nhưng xóa hồ sơ cấu hình và sau đó, nhấp chuột phải vào lớp của bạn -> chạy
NoName

2
"Build" menu -> "Rebuild Project- đã làm việc! Cảm ơn
Yan Khonski

1
Tùy chọn đầu tiên rebuild projectlàm việc cho vấn đề của tôi. Cảm ơn bạn!
khwilo

1
Tôi đã xóa .idea, .mvn và các thư mục đích khác sau đó khởi động lại IntelliJ. Đã đi đến nhật ký sự kiện, thêm dự án dưới dạng dự án Maven và sau đó làm theo các bước được đề cập bởi @Kishore tại đây. Nó đang làm việc.
Sunny Shekhar

105

Nếu không có câu trả lời nào ở trên phù hợp với bạn, chỉ cần đóng intelliJ IDE của bạn và xóa tệp và thư mục intelliJ IDE khỏi thư mục gốc của dự án:

rm -rf .idea *.iml 

Sau đó mở dự án với intelliJ. Nó phải làm việc bây giờ.


1
Điều này làm việc cho tôi. Tôi cũng đã nhập lại dự án của mình vào IntelliJ, nhưng đối với tùy chọn "Mô-đun nhóm", tôi đã sử dụng "sử dụng tên đủ điều kiện" (thay vì "sử dụng các nhóm mô-đun rõ ràng".
markhops

3
Xóa .ideathư mục luôn giải quyết tất cả các sự cố với IDE của JetBrains :)
shelll

điều này cũng có hiệu quả với tôi, tôi là một fan hâm mộ lớn của Intellij, nhưng họ cũng phải học cách làm những điều đơn giản.
Zwakele Mgabhi

Đã hơn 30 phút. cuối cùng này là những gì tôi phải làm gì để làm cho mọi việc
VIN

Chỉ có phương pháp này tại trang này làm việc cho tôi.
zionpi

81

Đối với tôi giải pháp là sửa thư mục đầu ra trong cài đặt dự án. Trước khi tôi chỉ sử dụng "đích" cho đầu ra của trình biên dịch Project. Thay vào đó, tôi đã cập nhật nó để có một đường dẫn đầy đủ, ví dụ: D: \ dev \ sigplusjava2_68 \ target nhập mô tả hình ảnh ở đây


10
điều đó không giúp tôi
Pavel

Có thể giải pháp của tôi ở đây thực sự là một biến thể tinh tế của câu trả lời của @ Ehsan bên dưới. Có lẽ bằng cách chỉ định thư mục đích, nó cung cấp cho nó một vị trí mới trong đó biên dịch tất cả các đối tượng về cơ bản thực hiện cùng một công việc mà a Rebuild Projectthực hiện.
Chú Iroh

1
@UncleIroh Nếu nó làm công việc tương tự, xây dựng lại + đọc cấu hình. sẽ sửa vấn đề ban đầu. Nó không, nhưng giải pháp của bạn đã làm.
hyperum

Đây phải là câu trả lời được chấp nhận. Luôn làm phiền tôi một lần nữa ..: p
Christopher Stock

37

Tôi đã có vấn đề này và tôi đã thử mọi thứ dưới ánh mặt trời mà tôi có thể nghĩ ra và trên trang web này.

Không có lớp Java nào của tôi được chọn sau khi tôi lấy từ một nhánh từ xa. Tất cả các lớp đều có chữ J màu đỏ bằng tên của chúng trong Phân cấp dự án, không phải chữ C màu xanh.

Cuối cùng, tôi đã cố gắng làm theo hướng dẫn này và một vài bước trong việc thử một cái gì đó không được mô tả và khắc phục vấn đề: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

Đây là những gì tôi đã làm:

  1. Tập tin Goto | Cấu trúc dự án hoặc nhấn Crtl + Shift + Alt + S
  2. Chọn mô-đun trong phần Cài đặt dự án.
  3. Trong tab Nguồn, nhấp vào Nguồn trên dòng 'Đánh dấu là:'.
  4. Nhấp vào nút Áp dụng.

Vì một số lý do, tất cả các lớp học của tôi sau đó có chữ C màu xanh.

Ai đó hiểu rõ hơn về cách IntelliJ và / hoặc IDE có thể giải thích hiện tượng này, nhưng tất cả những gì tôi biết là bây giờ nó có thể thấy tất cả các lớp và quan trọng hơn là lớp chính và chạy.


Điều này chỉ hoạt động với tôi sau khi tôi đóng Intellij, xóa thư mục .idea sau đó mở lại Intellij và làm theo các bước trên.
Shell_Leko

14

Hoàn toàn tạo một outthư mục và sau đó đặt đường dẫn đầu ra thànhC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

NHƯ THẾ NÀY

dường như chỉ hoạt động với tôi khi và chỉ outmong IntelliJ tạo thư mục.


Ngoài ra, hãy thử có IntelliJ làm cho bạn một cấu hình chạy mới:

Tìm cái trước bằng cách nhấn vào

! [Chỉnh sửa cấu hình

sau đó loại bỏ nó

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

và đánh ổn.

Bây giờ, (BƯỚC QUAN TRỌNG) mở lớp chứa phương thức chính của bạn. Điều này có lẽ được thực hiện dễ dàng nhất bằng cách nhấp vào tên lớp trong Project Pane bên trái.

Cho 'er a Alt+ Shift+ F10và bạn sẽ nhận được

ĐIỀU NÀY

Giờ thì đánh Enter!!

Tadah ?? (Nó có hoạt động không?)


Điều cấu hình chạy hoạt động, đặc biệt nếu bạn di chuyển main()chức năng từ class Mainmột số lớp khác. Trong trường hợp đó, hãy chỉnh sửa cấu hình chạy như được hiển thị ở trên và thay đổi giá trị của 'Lớp chính' thành tên lớp của bạn (đủ điều kiện).
đàn

Tôi chỉ có tùy chọn "Chỉnh sửa cấu hình", không hoạt động đối với tôi (
Ver Nick

14

Bộ nhớ cache không hợp lệ và khởi động lại intellij của bạn, nó hoạt động với tôi. Đi đến Tệp như hiển thị trong hình đính kèm


7

Tôi biết điều này đã được hỏi cách đây một thời gian, nhưng tôi chỉ vấp phải vấn đề này và nghĩ rằng những phát hiện của tôi có thể giúp đỡ người khác. Như đã chỉ ra, thông báo lỗi về cơ bản là kết quả của thư mục out. Đó là bởi vì, khi bạn đang cố chạy chương trình, nó sẽ biên dịch mã trước và đặt kết quả đã biên dịch vào vị trí ngoài, sau đó nó cố gắng tải mã được biên dịch từ vị trí ngoài. Nếu mã được biên dịch không ở vị trí mong đợi, bạn sẽ gặp lỗi.

Điểm tôi đặc biệt muốn chia sẻ là đôi khi, mã không được biên dịch (được xây dựng), mặc dù cấu hình chạy của bạn chỉ định "Xây dựng" trong phần "Trước khi khởi chạy" của bảng cấu hình.

Khi nào điều này có thể xảy ra? Một tình huống có thể khiến điều này xảy ra là nếu bạn đang sử dụng các mô-đun và bạn xóa thủ công thư mục ra khỏi mô-đun. Ví dụ: nếu tôi có một mô-đun có tên "foo", thì nên có một thư mục có tên foo bên ngoài / sản xuất. Nếu bạn xóa thủ công, hệ thống xây dựng có thể không biết rằng nó cần phải được xây dựng lại.

Thậm chí tệ hơn, nếu bạn chọn Build | Xây dựng mô-đun 'foo', nó vẫn có thể không xây dựng lại mô-đun. Nếu đó là trường hợp, bạn nên chọn một tệp trong mô-đun, ví dụ 'bar.java' và sau đó chọn Build | Biên dịch lại 'bar.java'. Bây giờ thư mục out out / sản xuất / foo nên được khôi phục.

Vì IntelliJ thường biết về bất kỳ thay đổi nào đang diễn ra, điều này làm tôi ngạc nhiên và mất một ít thời gian để tìm hiểu, vì vậy tôi nghĩ tôi muốn chia sẻ.


6

Kiểm tra mô-đun lớp của bạn : Tôi đã gặp vấn đề này với intellij: Tôi có một dự án đa mô-đun maven, vấn đề là tôi chạy một lớp không tồn tại mô-đun trong cấu hình, vì vậy vấn đề của tôi được khắc phục bằng cách đặt đúng mô-đun ( "chỉnh sửa cấu hình" -> "sử dụng lớp mô-đun")

điều này có thể giúp bạn


Làm việc cho tôi quá. Cảm ơn! Đã xảy ra lỗi khi cài đặt bản nâng cấp của IntelliJ hoặc plugin Scala. Sau đó, bạn nhận được vấn đề kỳ lạ này. Rất phiền phức và tốn thời gian. Hy vọng rằng JetBrains tìm thấy một giải pháp.
André van Delft

6

Tôi đã phải đánh dấu thư mục "src" là "Nguồn". Sau khi khởi động lại IntelliJ và xây dựng lại dự án, tôi có thể chạy dự án mà không gặp sự cố nào nữa (xem ảnh chụp màn hình ). Chỉnh sửa: Bạn có thể truy cập tab "Cấu trúc dự án" qua Tệp-> Cấu trúc dự án hoặc bằng cách nhấn Ctrl + Shift + Alt + S.


1
Nếu bạn (như tôi) không có tab 'nguồn', thì bạn nên thêm một mô-đun mới (nhấp vào dấu +) và chọn thư mục chính của bạn làm nguồn. Không có gì sẽ bị ghi đè và thư mục src sẽ chuyển sang màu xanh.
john ktejik

5

Mở tab Mô-đun (Nhấn Ctrl + Shift + Alt + S). Tôi đã có hai mô-đun theo một dự án. Tôi đã giải quyết vấn đề sau khi gỡ bỏ mô-đun dự phòng thứ hai (xem ảnh chụp màn hình).nhập mô tả hình ảnh ở đây


4

Tôi đã phải đối mặt với các vấn đề như vậy khi lớp nằm trong thư mục mặc định, tức là khi lớp không khai báo một gói.

Vì vậy, tôi đoán bằng cách sử dụng một câu lệnh gói (ví dụ. package org.me.mypackage;) Trên đầu lớp nên sửa nó.


Tôi có sao chép dòng mã đó không? .. làm thế nào để tôi sửa đổi nó trong trường hợp tôi phải ??
thư bối rối

Chỉ cần sử dụng tên gói của riêng bạn, như thế này:package org.confused.mailman;
Hakan Serce

Chà, câu lệnh gói phải khớp với nơi IDE đã đặt tệp. Nếu IDE không đặt tệp vào sourceBase / org/confused/mailmanthì việc thêm dòng gói đó sẽ không có ích.
QuantumMechanic

Tôi đoán IDE sẽ hướng dẫn về điều này và tự động sửa lỗi này, nếu cách khắc phục được khuyến nghị được chọn.
Hakan Serce

không giúp đỡ: / .. IDE dường như không bị làm phiền với bất kỳ thay đổi i make..it ném các lỗi trên và ngồi lưng và thư giãn
Nhầm lẫn Mailman

3

Tệp> Cấu trúc dự án> Mô-đun> Đánh dấu thư mục "src" làm nguồn. Điều này sẽ khắc phục vấn đề. Ngoài ra, hãy kiểm tra ngôn ngữ mới nhất được chọn để bạn không phải thay đổi mã hoặc thực hiện bất kỳ thay đổi cấu hình nào. nhập mô tả hình ảnh ở đây


2

Trong trường hợp của tôi, vấn đề dường như có liên quan đến việc nâng cấp IntelliJ. Khi tôi làm điều này, tôi đã ghi đè lên các tệp từ IntelliJ cũ bằng các tệp từ IntelliJ mới (cộng đồng 2017 đến 2018). Sau đó, tất cả các dự án của tôi đã bị phá vỡ. Tôi đã thử mọi thứ trong chủ đề này và không ai trong số họ làm việc. Tôi đã thử nâng cấp lớp lên phiên bản mới nhất (4 lên 4,8) và điều đó không hiệu quả. Điều duy nhất làm việc với tôi là xóa toàn bộ thư mục IntelliJ và cài đặt lại nó. Tất cả các dự án của tôi đã làm việc sau đó.


Có vẻ như điều này thực sự nó. Tôi sử dụng IntelliJ di động vì vậy tôi đổi tên thư mục chính như từ idea\binđược idea_old\binvà đổi tên các thiết lập thư mục trong %user%\usernameđó là .IntelliJIdea2018.2được .IntelliJIdea2018.2_oldsau đó tái chiết xuất IntelliJ file zip để bắt đầu sử dụng nó như là phiên bản di động mới tươi (Đây là phiên bản 2018/02/01) với mùa xuân Ứng dụng khởi động của nhiều mô-đun riêng biệt (không được liên kết trong pom.xml cha mẹ đơn), mỗi mô-đun là ứng dụng khởi động mùa xuân với pom.xml và voila của riêng nó !!! Tất cả các công việc, thư mục đích được tạo, biên dịch trước khi chạy qua bảng điều khiển khởi động mùa xuân.
Anddo

2

Đánh dấu thư mục là một thư mục nguồn. Đã mở qua Ctrl + Shift + Alt + S

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


1

Đối với tôi - tôi đã thử một vài tùy chọn ở trên, không hoạt động. Sau đó, tôi vừa đổi tên lớp Ứng dụng của mình và điều đó có lẽ đã buộc intelliJ xây dựng một bình mới và thông báo lỗi bắt đầu thay đổi. Sau đó tôi đổi tên nó trở lại và nó hoạt động.


1

Tôi đã thử tất cả các hack được đề xuất ở đây - không có kết quả. Cuối cùng, tôi chỉ đơn giản là tạo một ứng dụng Maven mới và sao chép thủ công vào nó - từng cái một - tệp pom.xml và các tệp và tài nguyên java. Bây giờ tất cả đều hoạt động. Tôi mới sử dụng IntelliJ và hoàn toàn không bị ấn tượng nhưng thật dễ dàng để đưa nó vào trạng thái không ổn định.


Bạn cần đóng intellij, xóa thư mục .idea (có thể là một tệp ẩn); sau đó mở lại thư mục trong intellij - nó sẽ khởi động lại dự án intelli dựa trên cấu hình maven / class.
Jeremy

1

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

mô-đun có nội dung sai, tôi không biết vấn đề gì với IDEA của mình.


1

Tôi đã thừa hưởng một loạt các tệp .JAVA từ nơi khác và không thể tìm ra cách để chúng hoạt động trong bất kỳ IDE nào. Cuối cùng, tôi đã phải đi đến dòng lệnh nơi tệp Main.JAVA đã chạy và chạy javac Main.java. Điều này tạo ra một loạt các tệp .CLASS. Các IDE sau đó đã có thể tìm ra phải làm gì.


1

Tôi đã gặp lỗi này khi sử dụng Scala / SBT . IntelliJ không thể tìm thấy lớp chính, mặc dù mọi thứ đã được thiết lập chính xác. Giải pháp của tôi: xóa <user>/.sbt/<version>/plugins/targetthư mục, sau đó khởi động lại IntelliJ.


1

Tôi đang sử dụng IntelliJ với Spring và lớp chính của tôi được gói trong một JAR. Tôi đã phải đánh dấu 'Bao gồm các phụ thuộc với phạm vi "Được cung cấp" trong hộp thoại Cấu hình Chạy / Gỡ lỗi


1

Chúng tôi đang ở Cấu trúc tệp / dự án .. Trả lời có thể là:

Thư mục được chỉ định là "root nội dung" cần một thư mục con có mã. Cộng với tìm nút đánh dấu mã là loại trừ và không. Không bị nhầm lẫn với tickbox mà các trạng thái bị loại trừ mà không cho biết trong giai đoạn nào và ** Trình biên dịch có loại trừ hoặc loại trừ thời gian chạy không? Bạn cam chịu thử nghiệm và rất nhiều. Vì vậy, không có tickbox mà biểu tượng và màu sắc.

Như một ý tưởng, chúng ta cần phải bẻ khóa nó như thế nào ban đầu được cho là hoạt động. Họ không bao giờ có được nó để làm việc ở nơi đầu tiên và bắt đầu thêm những thứ trong phong cách mã hóa sớm. Nó đã được rất nhiều năm và bạn không thể mong đợi bất kỳ cải thiện. Nhưng để chữa trị, chúng ta có thể hack một số cách để làm cho đúng mỗi lần.


1

Một điều khác mà bạn có thể kiểm tra ở đây là lệnh thực tế đang được truyền cho JVM và đảm bảo rằng nó trông ổn. Cuộn lên trên cùng của bảng điều khiển Run của bạn, nó sẽ là dòng đầu tiên.

Khoảng trống trong lĩnh vực Run Cấu hình VM chọn của bạn sẽ malform lệnh ứng dụng khởi động và có thể dẫn đến thông báo lỗi này

-DsomeArgument="arg with space must be quoted"

Cảm ơn ! Điều này làm việc cho tôi !!
Jcoder

0

Xây dựng dựa trên giải pháp của Brad Turek ... Một trong các mẫu dự án Java IntelliJ mặc định mong đợi một tệp có tên Main xác định điểm nhập phương thức Mainmain () . Nếu phương thức được chứa trong một tệp khác (và lớp), hãy thay đổi cấu hình Run :

Chạy cửa sổ cấu hình

  1. Với dự án mở trong IntelliJ, hãy sử dụng menu Run: Edit Configurations ... để mở cửa sổ cấu hình bản dựng.
  2. Nếu mục nhập cho lớp Main không liệt kê tên tệp của bạn chứa lớp hiển thị phương thức nhập chính () , hãy nhập tên tệp chính xác. (Cấu hình trong ảnh bị sai, đó là lý do tại sao nó có màu đỏ trong bảng cấu hình.)
  3. Phương thức nhập chính () của tôi là trong lớp (và tệp) ScrabbleTest . Vì vậy, việc thay đổi Lớp chính: thành ScrabbleTest sửa lỗi thời gian chạy.

Như những người khác đã lưu ý, bạn phải ReBuild bằng cách sử dụng cấu hình mới. Tôi đang sử dụng một gói, nhưng điều đó dường như không tạo ra sự khác biệt IME. Hi vọng điêu nay co ich.


0

Trong trường hợp của tôi trong build.gradle của mô-đun, việc gán mainClassName phải nêu rõ tên lớp đủ điều kiện, nghĩa là. như được chỉ định làm tên gói trong tệp mã nguồn của lớp chính.


0

Chỉ cần xây dựng lại dự án (CTRL + F9) và kiểm tra lại (Chỉnh sửa cấu hình) nếu bạn đã đặt đúng lớp Chính và mô-đun (nếu có)


0

Giải pháp đơn giản là vào thư mục được sao lưu trong dòng lệnh, trong đó thư mục gốc của dự án. Bạn nên cài đặt SBT trong máy của bạn.

Nếu bạn đã cài đặt sbt, vui lòng chạy lệnh "gói sbt", điều này sẽ biên dịch lại dự án nếu thành công, quay lại intelliJ nó sẽ hoạt động.


Chào mừng đến với SO! Khi bạn trả lời một câu trả lời, đêm trước nếu nó đúng, hãy cố gắng giải thích nó một chút.
David García Bodego

0

Trong trường hợp của tôi, tôi đã có (tương đối) các đối số vm dài được cấu hình. Việc chuyển đổi các đối số này (bất cứ khi nào có thể) thành các biến môi trường đã khắc phục sự cố cho tôi


Bạn không thể có khoảng trắng trong các tùy chọn VM trừ khi bạn đặt "dấu ngoặc kép" xung quanh các đối số
Yep

0

Trong trường hợp của tôi, ứng dụng chạy tốt khi mã ban đầu nằm trong thư mục / src trong dự án. Sau đó tôi đã thêm thư mục / main / java sau / src, sau đó xảy ra lỗi "Không thể tìm hoặc tải lớp chính ...". Tại thời điểm đó, bạn không thể thêm /src/main/java/YourMain.java vào cấu hình chạy. Những gì tôi đã làm là xóa cấu hình chạy, sau đó nhấp chuột phải vào dự án-> Mở Cài đặt mô-đun (hoặc F4 sau khi nhấp vào bảng Dự án) -> Cài đặt dự án-> Xóa mô-đun (x) Root gốc nội dung và + Thêm gốc nội dung, chọn / src / chính / java. Xây dựng lại dự án và nó chạy.


0

Bạn có thể đã chỉ định một gói sai và hệ thống phân cấp gói sẽ không đúng. Nhìn bên dưới

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

Các ide sẽ làm nổi bật con đường sai trong trường hợp đó.


0

Trong trường hợp của tôi, đó là một dự án maven, tôi đã nhập lại maven (nhấp chuột phải vào tệp pom.xml và nhấp vào Reimport ) để nó hoạt động ngay lập tức.

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.