Ошибка: не удалось найти или загрузить основной класс в 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».

Ehsan
источник
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. Это должно работать сейчас.

youhans
источник
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, он работал для меня. Перейти к файлу, как показано на прикрепленной картинке

S_K
источник
7

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

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

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

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

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

msoltys
источник
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 и переустановить ее. Все мои проекты работали после этого.

blindcant
источник
Кажется, это действительно так. Я использую переносной 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, и сообщение об ошибке начало меняться. Затем я переименовал его обратно, и это сработало.

JavaTec
источник
1

Отметить каталог как исходный каталог. Открывается с помощью Ctrl + Shift + Alt + S

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

катодно-лучевая трубка
источник
Дубликат ответа.
Джей Салливан
1

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

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

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

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

ibamboo
источник
1

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

codeMonkey
источник
1

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

Бени Мурза
источник
1

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

Охад Y
источник
1

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

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

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

Kurskinen
источник
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. Надеюсь это поможет.

JHake
источник
0

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

Мэтью
источник
0

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

AlexPes
источник
0

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

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

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

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

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

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

TGU
источник
0

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

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

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

Акаш Йеллаппа
источник
0

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

DDC
источник