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

108

У меня на ноутбуке есть проект в eclipse, который я отправил в Git https://github.com/chrisbramm/LastFM-History-Graph.git

Он полностью работает на моем ноутбуке и запускается / строится без проблем, но на моем рабочем столе Eclipse не выдает ошибку

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

Я пробовал построить проект из:

Project>Build Project

Но ничего не произошло. Я установил PATHпеременные на этом компьютере на JRE6, JRE7 и JDK 1.7.0, хотя они не установлены на моем ноутбуке.

У меня был файл Jar ( last.fm-bindings-0.1.1.jar ), который был в моем .classpathфайле, который находился в C: \ Users \ Chris \ Downloads папке на моем ноутбуке, поэтому он не был включен в дерево git, которое я недавно внесен в папку проекта и зафиксирован, но я не уверен, правильно ли я все сделал. Было бы это тоже проблемой, но в этом нет главного аргумента.

Я сейчас не могу понять, что нужно проверить / изменить.

Крис
источник
25
Вы пробовали Project> Clean и Project> Build Project?
javaCity
3
Несколько раз, и похоже, что это не сработало
Крис,
system environment classpath включает. Где еще мне нужно изменить и что конкретно я буду делать?
Chris
В моем случае я бежал java .\bin\selenium-server-standalone-3.9.1.jarтогда, когда это должно было бытьjava -jar .\bin\selenium-server-standalone-3.9.1.jar
Коти Эмбри

Ответы:

40

В своем пути к классам вы используете абсолютный путь, но вы переместили проект на новый компьютер с, вполне возможно, другой файловой структурой.

Поэтому в своем пути к классам вы должны (и, вероятно, в целом, если вы собираетесь связать JARS с вашим проектом), использовать относительный путь:

В вашем изменении .classpath

<classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/><classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/>

к

<classpathentry kind="lib" path="last.fm-bindings-0.1.1.jar"/>
птица7
источник
19
Как бы это изменить?
Aequitas,
У меня нет внешних банок, но я сталкиваюсь с аналогичными проблемами. stackoverflow.com/questions/49738153/…
Джесси
@Aequitas делает «Выполнить» -> «Запуск от имени» -> «Приложение Java». один раз, и он автоматически установит путь к классу. См. Ответ Blamkin86. Параметры пути к классам можно найти в разделе «Выполнить» -> «Выполнить конфигурации ...».
gkub 02
72

Если вы создаете класс java с помощью public static void main(String[] args), Eclipse запустит этот основной метод для вас, щелкнув правой кнопкой мыши сам файл или файл в проводнике проекта, а затем выбрав:

«Запуск от имени» -> «Приложение Java».

Как только вы это сделаете, Eclipse сохранит информацию о вашем классе, поэтому вы можете легко снова запустить класс из меню «Запуск от имени» (зеленая кнопка «Воспроизвести» на панели инструментов) или из диалогового окна «Выполнить конфигурации».

Если вы впоследствии ПЕРЕМЕСТИТЕ класс java (вручную или тем не менее), затем снова выберите

«Запуск от имени» -> «Приложение Java»,

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


РЕШЕНИЕ:
Для меня исправление заключалось в том, чтобы перейти к конфигурациям запуска (Зеленая кнопка воспроизведения -> Конфигурации запуска) и удалить все ссылки на класс. В следующий раз, когда ты побежишь

«Запуск от имени» -> «Приложение Java»

Eclipse напишет новую конфигурацию для перемещенного класса, и ошибка исчезнет.

Бламкин86
источник
2
Спасибо..!! Этот сработал для меня. Проблема началась, когда я изменил название проекта.
NixRam 08
+1 public static void main(String[] args)вот что меня достало. У меня случайно была неправильная подпись ( Mainвместо main). Поэтому важно убедиться в правильности подписи. :)
Николас Миллер
10
Как нам «удалить все ссылки на класс»?
aCarella
2
Работал как шарм. Моя проблема заключалась в том, что я создал build.gradle и settings.gradle, которые меняли имена по умолчанию, связанные с проектом. Удаление ссылок (запустить как -> запустить конфигурации -> удалить все конфигурации, связанные с проектом)
randombee
1
«удалить все ссылки на класс» - удалить все конфигурации запуска?
jcool
55

tl; dr : очистите весь путь сборки и все, что вы когда-либо добавляли к нему вручную. Сюда входят дополнительные источники, проекты, библиотеки.

  • Проект -> Очистить
  • Убедитесь, что Project -> Build автоматически активен
  • Проект -> Свойства -> Путь сборки Java -> Библиотеки: удалите все внешние библиотеки, которые вы когда-либо добавляли . Не удаляйте стандартные библиотеки, такие как системная библиотека JRE.
  • Попробуйте запустить свой основной класс сейчас. Ошибка "не удалось найти / загрузить класс" должна исчезнуть. Попробуйте добавить свои внешние библиотеки / jar-файлы одну за другой.

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

В моем случае это должно было быть что-то вроде «Не удалось добавить AutoHotkey.dll в путь сборки», потому что именно это привело к сбою компилятора.


Если это все еще не работает, взгляните на встроенный ErrorLog Eclipse :

Окно -> Показать вид -> Общие -> Журнал ошибок

phil294
источник
28

Я сделал все, что упомянуто выше, но ни один из них не помог мне

Моя проблема решилась следующим образом:

  1. Щелкните правой кнопкой мыши свой проект> Свойства> JavaBuildPath> Библиотеки .
  2. Удалите файл jar с красным флажком.
  3. Если проблема не исчезнет, ​​попробуйте следующее решение. У меня это сработало, когда я столкнулся с этой проблемой второй раз:
    1. Щелкните правой кнопкой мыши Project> Properties> Java Build Path> Libraries.
    2. Удалить библиотеку
    3. Добавить библиотеку. (Выберите системную библиотеку JRE)
Атул Чаван
источник
у меня сработало! У меня также был восклицательный знак рядом с именем папки моего проекта. Это тоже
исправило
Сработало у меня! Спасибо
Dhruv Kaushal
1
это сработало, просто удалив и повторно добавив ту же библиотеку java JRE
Эндрю Норман,
Это сработало для меня, хотя не было ни предупреждения, ни восклицательного знака
Михал Леон
Братан, ты буквально только что сохранил мой проект AP Java, ты даже не представляешь, спасибо тебе огромное,
Рохан Сингх
18

Я столкнулся с аналогичной проблемой в моем проекте maven webapp, потратив почти один час, я нашел решение, которое сработало для меня. Я набрал следующую команду maven, и она сработала

mvn clean install -U
Я не знаю точной причины этого.

раджив пани ..
источник
1
То же самое и для меня - тоже не знаю, почему это вообще произошло.
nsof 05
В eclipse, щелкнув правой кнопкой мыши Run As..Maven clean, затем Run As..Maven installсделал это за меня. Проблема началась, когда я изменил java-проект eclipse на проект maven eclipse. +1 за указание в правильном направлении.
CodeMed
-U, - update-snapshots
Принудительная
9

Я предполагаю, что вы импортировали проект в свою настольную установку eclipse? В таком случае просто выберите «Проект»> «Очистить». Затем перестройте свой проект. Сработало для меня как шарм.

Крис CodeCruncher
источник
9

У меня была такая же проблема, и я решил ее, используя:

Eclipse Mars
Egit
Github
Maven Project

Проблема заключалась в том, что я сделал свой проект maven доступным для github. Он переместил мой проект в мою папку на github.

Решение:

  • Закройте Eclipse
  • Удалите папку метаданных внутри вашей рабочей области
  • Перезапустить Eclipse

Будет отображен стартовый экран.

  • Закройте начальный экран
  • Щелкните правой кнопкой мыши в проводнике пакетов
  • Выбрал «импортный проект maven»,
  • Перейдите в папку на github и импортируйте проект maven.

После этого мой проект был успешно скомпилирован.

Маттис Кохли
источник
7

Убедитесь, что в вашем проекте есть конструктор:

  • проверьте свойства проекта (в «проводнике пакетов» щелкните проект правой кнопкой мыши, выберите «Свойства»), там второй раздел - «Строители», и он должен содержать значение по умолчанию «Java Builder»
  • или посмотрите в файле ".project" (в ... / workspace / yourProjectName / .project) раздел "buildSpec" не должен быть пустым.

Должны быть другие способы, но я сделал следующее:

  • выключить затмение
  • отредактируйте файл. "project", чтобы добавить раздел "buildSpec"
  • перезапустить затмение

Правильный минимальный java-файл ".project" должен выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>myProjectName</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>       
                    <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>      
</projectDescription>
loic.jaouen
источник
1
Это исправило это для меня. Вам не нужно закрывать Eclipse, чтобы изменить .projectфайл, вы можете просто закрыть проект.
Луис де Соуза,
Я, с другой стороны, просто выключил Eclipse (но не редактировал .projectфайл. Включил Eclipse снова, и это сработало: ошибка исчезла)
Shahar
6

Что ж, у меня сработало следующее ...

  1. Зашел в папку проекта (внутри workspace)
  2. Затем удалил binпапку
  3. Затем очищенный проект / проекты (в Eclipse)
  4. построено / запущено из Eclipse.
DeeCode
источник
Добро пожаловать в SO, DeeCod. Удаление папки bin и выполнение «проекта> очистки» и сборки уже предлагалось в других ответах. Вместо того, чтобы публиковать в качестве ответа «я тоже», я бы рекомендовал получить достаточную репутацию (вам нужно всего 50), чтобы публиковать комментарии и подтверждать, что конкретный подход сработал для вас в комментарии.
Амос М. Карпентер,
1
Спасибо, Амос! В любом случае, извините, если я ошибаюсь, насколько я понимаю -> Удаление корзины перед очисткой / перестройкой не предлагается в других ответах в этом потоке ... Просто очистить> сборка не сработала в моем сценарии ... пока это кому-то помогает :)
DeeCode
Не волнуйтесь - я встречал множество таких сценариев, когда попытки комбинации странных вещей внезапно срабатывают без видимой причины. ;-)
Амос М. Карпентер
4

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

Попробуйте перейти в свойства проекта > Путь сборки Java> вкладка «Порядок и экспорт»> выберите все (или попробуйте поиграть с флажками).

Это должно вызвать полную перестройку проекта и Eclipse увидеть основной класс.

Дополнение: я заметил, что эта ошибка возникает, когда у вас много проектов в рабочем пространстве, и некоторые из них настроены неправильно (появляется красный восклицательный знак). Исправление пути сборки проекта и других настроек (даже если этот проект не связан с тем, с которым у вас возникли проблемы) должно решить проблему.

Дмитрий Августис
источник
4

Моя Main classпроблема не может быть найдена или загружена по интересной причине.

В нашем проекте мы используем в Mavenкачестве инструмента сборки и мой main class extendsкласс a, который есть, class pathно его область видимости была test, а класс main classне находится в тестовом пакете.

Если ваш основной класс extends- это класс, сначала попробуйте запустить main classего, удалив extendsчасть. Если он работает, то, по крайней мере , понять , что проблема не из - за run configurationили eclipseно класса, ваш main class extends.

Ad Infinitum
источник
4

Для меня причина появления этой ошибки заключалась в том, что путь к классам превышал лимит в окнах. Затем я обнаружил опцию «Использовать временный JAR для указания пути к классам (чтобы избежать ограничений длины пути к классам)». Выбор этой опции устранил проблему для меня. Эта опция находится в Run / Debug Configuration, вкладке Classpath, см. Изображение ниже.

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

xbranko
источник
3

Эта проблема также возникает, когда у вас есть специальные символы в пути к рабочей области. Моя рабочая область была в моей личной папке, и ее имя было на греческом, поэтому это не сработало. Я изменил свое рабочее пространство, теперь путь содержит только английские символы, и теперь проект создается без проблем.

Ставрос Стефанакакис
источник
3

Если вы используете eclipse, то следующие шаги решат вашу проблему:

Перейдите в Run -> Run Configurations -> Main Class Search -> Найдите свой класс вручную -> Apply -> Run


источник
3

У меня была такая ошибка. Это было потому, что static void main(String[] args)
вместо public static void main(String[] args)

Я потратил почти час на то, чтобы понять это.

Примечание . Единственная разница в том, что я не заявлял, mainчтоpublic

Алекс Спенсер
источник
3

Если у вас хороший код и вы знаете, что у вас проблема с Eclipse, это решит ее.

Вы можете просто удалить $ yourproject / .classpath, $ yourproject / .project и $ yourworkspace / .metadata. Кто-то еще упомянул этот вариант. Однако это взорвет все ваше рабочее пространство. Вместо:

  1. Удалите .classpath и .project из вашего проекта
  2. Удалите свой проект в eclipse. НЕ проверяйте удаление содержимого проекта на диске.
  3. Теперь в проводнике файлов перейдите в $ yourworkspace / .metadata.
  4. Найдите $ yourprojectname
  5. Удалите все, что найдете. Удаление чего-либо в каталоге .metadata должно быть безопасным.
  6. В eclipse: Файл> Импорт> Общие> Проекты из папки или архива> $ yourproject> finish
  7. Щелкните правой кнопкой мыши свой проект> свойства> Путь сборки Java> вкладка Источник
  8. Выбрать все исходные папки, удалить.
  9. Добавьте папку, выберите src (как бы ни называлась ваша папка src) и добавьте ее
  10. Перейти на вкладку библиотеки
  11. Добавьте сюда любые банки в свой путь сборки. Теперь в вашем проекте больше не должно быть ошибок.
  12. Запустите свой проект, как обычно.
Брент Сандстром
источник
Я перезаписываю .classpathи .projectфайл файлами из другого проекта, и это сработало ... действительно ли важно совпадение или путь к классам?
Amarth Gl
Вероятно, совпадение, поскольку эти файлы относятся к вашему проекту. Возможно, вы по незнанию заставили eclipse регенерировать эти файлы, внося ошибки. Откройте файл и прочтите его, и вы поймете, что они делают. Путь к классам содержит каталоги папок libs и src, а .project хранит плагины и аспекты аспектов проекта
Брент
3

это могло вызвать библиотеки jdk, если вы импортировали в jre

это случилось со мной, поэтому проверьте установленные jre-банки

в eclipse нажмите Windows> Preferences> Java> Installed Jres> нажмите Jre и отредактируйте после этого, просмотрите список jar, убедитесь, что ни один не jdk или не поврежден, введите описание изображения здесь

user889030
источник
2

Я столкнулся с той же проблемой, но в моем случае это было вызвано отсутствующей (пустой) исходной папкой (она существует в исходном проекте, но не в репозитории GIT, потому что она пуста).

После создания недостающей папки все работает.

нотрем
источник
2

Я тоже получил эту ошибку сразу после перемещения некоторых ресурсов. Проверяя журнал ошибок, я увидел, что Eclipse не может создать сборку, поскольку не может удалить файл / папку. Попробуйте вручную удалить папку «bin» (или как там она называется).

По крайней мере, это помогло мне.

Зар
источник
Ага. после того, как я перенесу проект в git. Возникла проблема. Я пробую это, и мне также нужно «закрыть проект» и «открыть проект», чтобы добиться цели.
Yeung
2

Сегодня я столкнулся с этой ошибкой, потому что я установил программу hello world, а затем вырезал и вставил новую программу в тот же файл. Чтобы решить проблему не нахождения hello world, поскольку последний был вызван, я щелкнул Run-> Run Configurations, а затем в Main Class я щелкнул поиск, нашел мое новое имя класса и заменил его правильным новым именем в тексте, который я вставил . Я знаю, что это проблема новичков, но ее также легко исправить. Я надеюсь, что это поможет кому-то! Дуглас

Дуглас Э. Кнапп
источник
2

У меня была такая же проблема с правильным файлом .classpath, и вскоре я обнаружил, что на самом деле это не засчитанный файл .classpath (после того, как я исправил эту проблему, я заменил работоспособный файл .classpath исходным, проект все еще работал, что означает, что файл. classpath файла не было)

Поскольку это проект Maven, все, что я сделал, это:

  1. mvn eclipse: чистый
  2. удалить проект eclipse
  3. импортировать проект
  4. сделано

Надеюсь, поможет!

Карл Ли
источник
2

В основном это происходит потому, что Eclipse очищает .classфайлы, но не создает их снова. Проверьте binпапку, она должна быть пустой. Затем вы должны проверить, есть ли что-то еще, что вызывает сбой сборки. Возможно, вы добавили несколько jar-файлов в путь к классам, которые Eclipse может не найти.

user3687451
источник
2

Просто зайдите в проводник пакетов и нажмите F5, или для некоторых ноутбуков - fn + F5. Причина в том, что eclipse думает, что файлы где-то находятся, но на самом деле файлы находятся где-то еще. Обновив его, вы поместите их обоих на одну страницу. Не волнуйтесь, вы ничего не потеряете, но если вы хотите быть особенно осторожным, просто сделайте резервную копию файлов из папки проектов Java в безопасное место.

Стив Лам
источник
Это сработало для меня. Я столкнулся с проблемой после обновления до более новой версии Eclipse. Это проект gradle, и gradle clean eclipse не решил проблему. Простое обновление сделал.
dnuttle 08
2

Вот простые шаги, которые помогли мне решить эту проблему.

  1. Закройте затмение
  2. Удалите папку ".metadata" в вашем рабочем пространстве. (может быть скрытая папка)
  3. Откройте eclipse (он автоматически создаст папку ".metadata" в вашем рабочем пространстве)
  4. Попробуйте запустить программу.
Сохам Дарджи
источник
Это отвяжет мой проект от рабочего пространства. Вам придется снова импортировать все свои проекты!
Мухаммад Гелбана
Я согласен с @MuhammadGelbana, я удалил .metadata, и это разрушило мою рабочую область. Будьте очень осторожны при использовании этого решения.
TYMG
2

Чтобы решить эту ошибку, выполните следующие действия:

Шаг 1. Откройте .project файл .

Шаг 2. Отметьте два тега ...

    a) <buildSpec>

    b) <natures>

Шаг 3: Если вышеупомянутые теги не содержат какого-либо содержимого, то наверняка возникнет указанная выше ошибка.

Шаг 4: Добавьте следующее содержимое к каждому тегу, чтобы устранить указанную выше ошибку.

Для <buildSpec>:

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

Для <natures>:

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

Шаг 5: Сохраните файл, нажав ctrl + s.

Шаг 6: На всякий случай просто закройте проект один раз и снова откройте его.

Шаг 7: Вот и все. Вы готовы зажигать !!!

Пожалуйста, укажите в комментариях, было ли решение полезным.

Спасибо.

Нишат Лахани
источник
2

Проверьте журнал ошибок рабочей области (Windows-> Показать вид -> Журнал ошибок). Если вы видите, что какой-либо из импортированных файлов jar поврежден, удалите соответствующую папку репозитория и повторите импорт.

Раман
источник
2

2 типа решений для одного и того же.

(1) Перейдите к запуску конфигураций: - run-> run configurations Во вкладке Classpath:

Выберите Advanced Add, где Eclipse обычно помещает * .class для проектов, который находится в bin. Итак, я добавил каталог bin для проекта.

(2) Если первое решение не работает, это означает, что jar, который вы указываете на свой проект, идет по пути вашего локального репозитория Maven, который не обновляется для вашего проекта, поэтому лучше проверьте jar из этого локального репозитория maven и просто скопируйте его, вставьте в новый проект или просто скачайте с любого сайта и настройте в свой путь сборки.

Я надеюсь, что это помогает.

navis1692
источник
1

У меня такая же проблема. Потратил несколько часов и, наконец, сменил рабочее пространство обратно на локальную папку, и теперь все работает. Может, сэкономит время другим. Джон

user1362446
источник
1

У меня возникла эта проблема после того, как сначала возникла проблема с отказом Windows 8 обновлять мой путь независимо от того, что я установил для JAVA_HOME - java -version сообщила последний JDK вместо того, который я хранил в JAVA_HOME. Я наконец заставил это работать, поместив "% JAVA_HOME% / bin;" в начале переменной среды path, а не в конце. Затем я запустил Eclipse, и внезапно он не смог найти мой основной класс, хотя до этого он работал нормально. То, что я сделал, чтобы исправить это, вошел в свойства проекта, удалил существующую библиотеку JRE из вкладки библиотек, добавил новую JRE, нажав кнопку «Добавить библиотеку», а затем следовал инструкциям по установке JRE 7 в качестве JRE по умолчанию. Теперь все вернулось к работе.

Говард Рорк
источник
1

В моем случае я нашел другое решение этой проблемы: Eclipse->Preferences->Java->Installed JREзатем нажмите кнопку Search. Выберите папку в Linux, /usrтогда Eclipse обнаружит все JVM.

Выберите другую JVM, которая слишком актуальна . Это решено для моего случая.

Кароль Прейскорн
источник