Ошибка: не удалось найти или загрузить основной класс в IntelliJ IDE


151

Я новичок в Java и пытаюсь запустить свой код, используя IntelliJ, который я только что установил в качестве своей IDE с JDK 1.7. Следующий фрагмент кода даже не компилируется и продолжает выдавать ошибку:

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");
   }
}

Есть ли какие-либо изменения, которые я должен сделать в настройках компилятора? Или это код.


2
Как называется исходный файл? Это libTest.java?
— QuantumMechanic

import java.lang...Это происходит автоматически для классов в langпакете.
— Эндрю Томпсон

Как уже упоминалось в QuantumMechanic, ваш основной класс должен находиться в файле с таким же именем. Таким образом, libTest должен находиться в файле Java с именем libTest.java, иначе компилятор java будет жаловаться. Кроме того, вы создали источник через IDEA, или вы создали новый проект IDEA поверх существующего источника?
— Макфинниган

попытался импортировать java.lang без разницы
— Confused Mailman

они идентичны. Есть ли другая причина, по которой такая ошибка должна быть помечена?
— Confused Mailman

Ответы:


178

Это может помочь:

1) Меню «Построить» -> « Rebuild Project». Иногда Intellij не переписывает классы, потому что они уже существуют, таким образом, вы просите Intellij переписать все.

2) Меню «Выполнить» -> « Edit configuration» -> удалить профиль -> добавить профиль («Приложение», если это приложение Java), выберите свой основной класс в раскрывающемся меню «Основной класс».

3) Меню «Построить» -> « Rebuild Project».


9
У меня был новый проект в IntelliJ, и он не запустился. Rebuild Projectработал на меня!
— Дэнни Хардинг

Второй вариант сработал для меня. Но удалите профиль конфигурации, а затем щелкните правой кнопкой мыши свой класс ->
— NoName

2
"Build" menu -> "Rebuild Project- сделал работу! Спасибо
— Ян Хонски

1
Первый вариант rebuild projectсработал для моей проблемы. Спасибо!
— Хвило

1
Я удалил .idea, .mvn и другие целевые каталоги, затем перезапустил IntelliJ. Зашел в журнал событий, добавил проект как проект Maven, а затем выполнил шаги, упомянутые здесь @Kishore. Это работает сейчас.
— Солнечный Шекхар

105

Если ни один из приведенных выше ответов не помог вам, просто закройте вашу IDE intelliJ и удалите файл и папку IntelliJ IDE из корня проекта:

rm -rf .idea *.iml 

Затем откройте проект с IntelliJ. Это должно работать сейчас.


1
Это сработало для меня. Я также повторно импортировал свой проект в IntelliJ, но для опции «Групповые модули» я использовал «использование квалифицированных имен» (вместо «использования явных групп модулей».
— markhops,

3
Удаление .ideaпапки всегда решает все проблемы с IDE JetBrains :)
— shelll

это тоже сработало для меня, я большой поклонник Intellij, но они должны научиться делать простые вещи тоже.
— Zwakele Mgabhi

Потрачено 30+ минут. наконец, это то, что я должен был сделать, чтобы заставить вещи работать
— Вин

Только этот метод на этой странице работает для меня.
— Ционпи

82

Для меня решение было исправить выходной каталог в настройках проекта. Раньше я использовал только «цель» для вывода компилятора проекта. Вместо этого я обновил его, указав полный путь, например D: \ dev \ sigplusjava2_68 \ target введите описание изображения здесь


10
это не помогло мне
— Павел

Вполне возможно, что мое решение на самом деле представляет собой тонкий вариант ответа @ Ehsan ниже. Возможно, указав целевой каталог, он дает ему новое местоположение, в котором компилируются все объекты, по существу выполняющие ту же работу, что и a Rebuild Project.
— Дядя Иро

1
@UncleIroh Если это сделало ту же самую работу, перестроение + чтение конфигурации. исправил бы проблему изначально. Это не так, но ваше решение сделал.
— гиперум

Это должен быть принятый ответ. Меня всегда снова пугает ..: p
— Кристофер Сток

38

У меня была эта проблема, и я попробовал все под солнцем, что я мог придумать и на этом сайте.

Ни один из моих классов Java не был поднят после того, как я извлек из удаленной ветви. У всех классов были красные J по именам в иерархии проекта, а не синие C.

В конце я попытался следовать этому руководству, и несколько шагов попробовал что-то не описанное и устранил проблему: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

Вот что я сделал:

  1. Перейти к файлу | Структура проекта или нажмите Crtl + Shift + Alt + S
  2. Выберите Модули в разделе «Настройки проекта».
  3. На вкладке «Источники» нажмите «Источники» в строке «Пометить как:».
  4. Нажмите кнопку Применить.

По какой-то причине у всех моих классов были синие буквы "Си".

Кто-то, кто лучше понимает, как IntelliJ и / или IDE могут объяснить это явление, но я знаю только то, что теперь он может видеть все классы и, что более важно, основной и запускать.


У меня это сработало только после того, как я закрыл Intellij, удалил папку .idea, затем снова открыл Intellij и выполнил шаги, описанные выше.
— Shell_Leko

14

Явно создайте outпапку и затем установите выходной путьC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

КАК ЭТО

казалось, работал для меня, когда просто out, и ожидание, что IntelliJ сделает папку, не будет.


Также попробуйте, чтобы IntelliJ создал новую конфигурацию запуска:

Найти предыдущий, нажав

! [Редактировать конфигурации

затем удали его

введите описание изображения здесь

и ударил в порядке.

Теперь (ВАЖНО ШАГ) откройте класс, содержащий ваш метод main. Это, вероятно, проще всего сделать, нажав на имя класса в левой части панели проекта.

Дайте Alt+ Shift+, F10и вы должны получить

ЭТОТ

Теперь ударил Enter!

Tadah ?? (Это сработало?)


Конфигурация запуска работает, особенно если вы переместили main()функцию из class Mainдругого класса. В этом случае отредактируйте конфигурацию запуска, как показано выше, и измените значение «Основной класс» на свое имя класса (полностью определенное).
— форум

У меня есть только опция «Изменить конфигурацию», у меня не работает (
— Ver Nick

Я не мог не заметить, что вы почувствовали название вашего проекта и запустили конфигурацию, но это все еще хорошо видно на втором снимке экрана
— Джейкоб Шнайдер

Джейкоб Шнайдер, это так. Я не могу вспомнить, почему я подверг цензуре это - вероятно из-за неуместного изобилия предостережения.
— Брэд Турек

14

Сделайте недействительным кеш и перезапустите ваш intellij, он работал для меня. Перейти к файлу, как показано на прикрепленной картинке


7

Я знаю, что об этом спрашивали некоторое время назад, но я просто спотыкался об этой проблеме и думал, что мои выводы могут помочь другим. Как уже указывалось, сообщение об ошибке в основном является результатом папки out. Это потому, что когда вы пытаетесь запустить программу, она сначала компилирует код и помещает скомпилированный результат в исходящее местоположение, а затем пытается загрузить скомпилированный код из выходного местоположения. Если скомпилированный код не находится в ожидаемом месте, вы получите ошибку.

Особо хочу поделиться тем, что иногда код не компилируется (не собирается), даже если ваша конфигурация запуска указывает «Сборка» в разделе «Перед запуском» панели конфигурации.

Когда это может произойти? Это может произойти в том случае, если вы используете модули и вручную удаляете каталог out модуля. Например, если у меня есть модуль с именем "foo", в каталоге out / production должен быть каталог с именем foo. Если вы удалите его вручную, система сборки может не знать, что его нужно восстановить.

Еще хуже, если вы выберете Build | Сборка модуля 'foo', он все равно может не перестроить модуль. Если это так, вы должны выбрать файл в модуле, например, 'bar.java', а затем выбрать Build | Перекомпилируйте 'bar.java'. Теперь выходной каталог out / production / foo должен быть восстановлен.

Поскольку IntelliJ обычно знает о любых происходящих изменениях, это удивило меня и заняло у меня немного времени, чтобы разобраться, поэтому я решил поделиться.


6

Проверьте ваш модуль класса : я столкнулся с этой проблемой с intellij: у меня есть многомодульный проект Maven, проблема в том, что я запускаю класс, который не существует модуля в конфигурации, поэтому моя проблема решается путем установки правильного модуля ( "изменить конфигурацию" -> "использовать класс модуля")

может ли это помочь вам


У меня тоже сработало. Спасибо! Возможно, что-то пошло не так при установке обновления IntelliJ или плагина Scala. После этого вы получите эту странную проблему. Очень раздражает и отнимает много времени. Надеюсь, JetBrains найдет решение.
— Андре ван Делфт

6

Мне пришлось пометить папку "src" как "Источники". После перезапуска IntelliJ и перестройки проекта я мог запустить проект без дальнейших проблем (см. Скриншот ). Редактировать: Вы можете перейти на вкладку «Структура проекта» через Файл-> Структура проекта или нажав Ctrl + Shift + Alt + S.


1
Если у вас (как и у меня) нет вкладки «Источники», то вы должны добавить новый модуль (нажмите зеленый +) и выберите свою основную папку в качестве источника. Ничто не будет перезаписано, а папка src станет синей.
— Джон Ктеджик

5

Откройте вкладку «Модули» (нажмите Ctrl + Shift + Alt + S). У меня было два модуля в рамках одного проекта. Я решил проблему после удаления второго избыточного модуля (см. Скриншот).введите описание изображения здесь


4

Я сталкивался с такими проблемами, когда класс находится в папке по умолчанию, т.е. когда класс не объявляет пакет.

Так что я думаю, что использование оператора пакета (например package org.me.mypackage;) в верхней части класса должно исправить это.


мне повторить эту строку кода ?? .. как я могу изменить его в случае, если я должен ??
— Confused Mailman

Просто используйте собственное имя пакета, например так:package org.confused.mailman;
— Hakan Serce

Что ж, оператор пакета должен совпадать с тем, куда IDE поместил файл. Если среда IDE не поместила файл в sourceBase /, org/confused/mailmanдобавление этой строки пакета не поможет.
— QuantumMechanic

Я предполагаю, что IDE поможет с этим и автоматически исправит это, если выбрано рекомендуемое исправление.
— Хакан Серце

не помогает: / .. IDE, кажется, не беспокоит какие-либо изменения, которые я делаю .. она выдает вышеуказанную ошибку и бездельничает и расслабляется
— Confused Mailman

3

Файл> Структура проекта> Модули> Пометить папку "src" как источники. Это должно решить проблему. Также убедитесь, что выбран последний язык, чтобы вам не приходилось менять код или вносить какие-либо изменения в конфигурацию. введите описание изображения здесь


Дубликат ответа.
— Джей Салливан

2

В моем случае проблема, казалось, была связана с обновлением IntelliJ. Когда я сделал это, я переписал файлы старого IntelliJ с файлами нового IntelliJ (сообщество от 2017 до 2018). После этого все мои проекты были разбиты. Я пробовал все в этой теме, и ни один из них не работал. Я попытался обновить Gradle до последней версии (от 4 до 4.8), и это не сработало. Единственное, что мне помогло, - это удалить всю папку IntelliJ и переустановить ее. Все мои проекты работали после этого.


Кажется, это действительно так. Я использую переносной intellij, поэтому я переименовал основную папку, как из, idea\binчтобы быть idea_old\binи переименовал папку настроек, в %user%\usernameкоторую .IntelliJIdea2018.2нужно .IntelliJIdea2018.2_oldзатем повторно извлечь intellij zip файл, чтобы начать использовать его в качестве новой новой переносной версии (это версия 2018.2.1) с Spring Загрузочное приложение из нескольких отдельных модулей (не связанных в одном родительском pom.xml), каждое из которых является весенним загрузочным приложением со своим собственным pom.xml и вуаля !!! Все работает, целевая папка создана, компилируется перед запуском через панель весенней загрузки.
— Андо

1

Для меня - я попробовал несколько вариантов выше, не сработало. Затем я просто переименовал свой класс Application, и это, вероятно, заставило intelliJ создать свежий jar, и сообщение об ошибке начало меняться. Затем я переименовал его обратно, и это сработало.



1

Я перепробовал все предложенные здесь хаки - безрезультатно. В конце я просто создал новое приложение Maven и вручную скопировал в него - один за другим - файлы pom.xml и java и ресурсы. Теперь все работает. Я новичок в IntelliJ и совершенно не впечатлен, но как легко привести его в нестабильное состояние.


Вам нужно закрыть intellij, удалить папку .idea (возможно, скрытый файл); затем снова откройте папку в intellij - она ​​будет инициализировать проект intelli на основе конфигурации maven / grade.
— Джереми

1

введите описание изображения здесь

modules.xml с неправильным содержанием, я не знаю, что случилось с моей IDEA.


1

Я унаследовал кучу файлов .JAVA из других источников и не мог понять, как заставить их работать в любой среде IDE. В конечном итоге мне пришлось перейти в командную строку, где находился файл Main.JAVA, и запустить его javac Main.java. Это создало кучу файлов .CLASS. Затем IDE смогли выяснить, что делать.


1

Я получил эту ошибку при использовании Scala / SBT . IntelliJ не смог найти основной класс, хотя все было настроено правильно. Мое решение: удалите <user>/.sbt/<version>/plugins/targetпапку, затем перезапустите IntelliJ.


1

Я использую IntelliJ с Spring, и мой основной класс обернут в JAR. Мне нужно было пометить «Включить зависимости с« предоставленной »областью действия» в диалоге конфигурации Run / Debug


1

Мы находимся в File / Project Structure .. Ответ может быть следующим:

Папка, обозначенная как «корень содержимого», нуждается в дочерней папке, в которой находится код. Плюс найдите кнопку, которая помечает код как исключенный, а не как. Не следует путать с галочкой, в которой говорится об исключении, не указывая, на какой стадии и в каком состоянии ** Это исключение компилятора или исключения во время выполнения? Вы обречены на испытания и многое. Так что нет этой галочки, но значки и цвета.

Как идея, нам нужно взломать, как это изначально считалось работать. Они никогда не заставляли его работать в первую очередь и начали добавлять вещи в стиле преждевременной кодакуляции. Это было так много лет, и вы не можете ожидать каких-либо улучшений. Но, как лекарство, мы можем каждый раз придумать, как сделать это правильно.


1

Здесь вы можете проверить еще одну фактическую команду, которая передается в JVM, и убедиться, что она выглядит нормально. Прокрутите до верхней части консоли Run, это должна быть первая строка.

Пробелы в поле «Параметры конфигурации виртуальной машины» приведут к неправильной команде запуска приложения и могут привести к появлению этого сообщения об ошибке.

-DsomeArgument="arg with space must be quoted"

Спасибо ! Это сработало для меня!
— Jcoder

0

Разработка решения Брэда Турека ... Один из стандартных шаблонов проектов Java IntelliJ предполагает наличие файла с именем Main, определяющего точку входа в класс Main и main () . Если метод содержится в другом файле (и классе), измените конфигурацию запуска :

Окно настройки запуска

  1. Когда проект открыт в IntelliJ, используйте меню Run: Edit Configurations ..., чтобы открыть окно конфигурации сборки.
  2. Если запись для класса Main не содержит имени вашего файла, содержащего класс, представляющий метод записи main () , введите правильное имя файла. (Неправильная конфигурация на изображении, поэтому на панели конфигурации он красный.)
  3. Мой метод ввода main () находится в классе (и файле) ScrabbleTest . Таким образом, изменение Main class: на ScrabbleTest исправляет ошибку времени выполнения.

Как уже отмечали другие, вы должны перестроить, используя новую конфигурацию. Я использую пакет, но это, кажется, не имеет значения IME. Надеюсь это поможет.


0

В моем случае в build.gradle модуля назначение mainClassName должно указывать полное имя класса, т.е. как указано в качестве имени пакета в файле исходного кода основного класса.


0

Просто пересоберите проект (CTRL + F9) и дважды проверьте (Изменить конфигурации), если у вас есть правильно настроенный Основной класс и модуль (если есть)


0

Простое решение - перейти в резервную папку в командной строке, где находится корневая папка проекта. На вашем компьютере должен быть установлен SBT.

Если у вас установлен sbt, пожалуйста, запустите команду "sbt package", в случае успеха проект будет перекомпилирован, вернитесь к intelliJ, он будет работать.


Добро пожаловать на ТАК! Когда вы отвечаете на ответ, накануне, если он прав, постарайтесь объяснить это немного.
— Дэвид Гарсия Бодего

0

В моем случае я настроил (относительно) длинные аргументы vm. Преобразование этих аргументов (когда это возможно) в переменные среды решило проблему для меня


У вас не может быть пробелов в параметрах виртуальной машины, если вы не поместите «кавычки» вокруг аргументов
— Да,

0

В моем случае приложение работает хорошо, когда код изначально находился в каталоге / src проекта. Позже я добавил каталог / main / java после / src, затем произошла ошибка «Не удалось найти или загрузить основной класс ...». В то время вы не могли добавить /src/main/java/YourMain.java в конфигурацию запуска. Что я сделал, так это удалил конфигурацию запуска, затем щелкнул правой кнопкой мыши проект-> Открыть настройки модуля (или F4 после щелчка на панели «Проект») -> Настройки проекта-> Удалить модули (x) старый корень контента и + Добавить корень контента, выберите / src / main / java. Перестройте проект, и он запустится.


0

Вы, вероятно, указали бы неправильный пакет, и иерархия пакетов была бы неправильной. Смотри ниже

введите описание изображения здесь

Идея будет указывать на неправильный путь в этом случае.


0

В моем случае это проект maven, я повторно импортировал maven (щелкните правой кнопкой мыши на файле pom.xml и выберите Reimport ), и он сразу заработал .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.