Затемнення "Помилка: не вдалося знайти або завантажити основний клас"


108

У мене на ноутбуці є проект у затемненні, який я натиснув на 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, яке я нещодавно внесений у папку проектів і скоєний, але я не впевнений, чи правильно це зробив. Чи це також спричинить проблему, але в цьому немає основного аргументу.

Зараз я не можу розробити, що мені потрібно перевірити / змінити.


24
Ви пробували Project> Clean and Project> Build Project?
javaCity

3
Неодноразово, і, схоже, не спрацювало
Кріс,


Система екологічного класоутворення включає. Де ще мені потрібно змінити і що конкретно я би робив?
Кріс

У моєму випадку я бігав, java .\bin\selenium-server-standalone-3.9.1.jarколи треба булоjava -jar .\bin\selenium-server-standalone-3.9.1.jar
Coty Embry

Відповіді:


40

На своєму класі ви використовуєте абсолютний шлях, але ви перемістили проект на нову машину з цілком можливою іншою структурою файлів.

Тому на своєму класі ви повинні (і, мабуть, взагалі, якщо ви збираєтесь поєднати JARS зі своїм проектом), використовувати відносний шлях:

У вашому .classsath зміні

<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"/>

19
Як би це змінити?
Aequitas

У мене немає зовнішніх банок, але я стикаюся з подібними проблемами. stackoverflow.com/questions/49738153/…
Джессі

@Aequitas зробіть "Виконати" -> "Запустити як" -> "Додаток Java". один раз, і він встановить шлях до класу автоматично. Дивіться відповідь Blamkin86. Налаштування курсу шляху можна знайти в розділі "Виконати" -> "Запустити конфігурації ...".
gkubed

72

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

"Запустити як" -> "Додаток Java."

Після цього Eclipse зберігає інформацію про свій клас, тому ви можете легко запустити клас знову з меню «Запустити» (Зелена кнопка відтворення на панелі інструментів) або з діалогового вікна «Запустити конфігурації».

Якщо згодом ви перейдете до класу java (вручну чи все-таки), тоді знову виберіть

"Запустити як" -> "Додаток Java",

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


РЕШЕННЯ:
Для мене виправленням було перейти до конфігурацій запуску (Зелена кнопка відтворення -> Запустити конфігурації) та видалити всі посилання на клас. Наступного разу ти забіжиш

"Запустити як" -> "Додаток Java"

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


2
Дякую..!! Цей працював на мене. Проблема почалася, коли я змінив назву проекту.
NixRam

+1 public static void main(String[] args)- це те, що отримало мене. Я випадково мав неправильний підпис ( Mainзамість main). Отже, важливо переконатися в правильності підпису. :)
Ніколас Міллер

10
Як ми "видаляємо всі посилання на клас"?
aCarella

2
Працював як шарм. Моєю проблемою було те, що я створив build.gradle та settings.gradle, які змінювали імена за замовчуванням, які були пов'язані з проектом. Видалення посилань (запустіть як -> запустіть конфігурації -> видаліть усі конфігурації, пов'язані з проектом)
randombee

1
"видалити всі посилання на клас" - чи потрібно видалити всі запущені конфігурації?
jcool

55

tl; dr : очистіть увесь шлях збірки та все, що ви коли-небудь додавали до нього вручну. Сюди входять додаткові джерела, Проекти, Бібліотеки.

  • Проект -> Очистити
  • Переконайтесь, що проект -> збірка автоматично активний
  • Проект -> Властивості -> Шлях до збірки Java -> Бібліотеки: Видаліть будь-які зовнішні ваги, які ви коли-небудь додавали . Не видаляйте стандартні бібліотеки, такі як системна бібліотека JRE.
  • Спробуйте запустити свій основний клас зараз. Помилка "класу не вдалося знайти / завантажити" повинна бути відсутня. Спробуйте додати один за одним зовнішні кришки / банки.

Причина цього: У компілятора виникли проблеми, пов’язані з бібліотеками до проекту. Не вдалося і видало неправильне повідомлення про помилку.

У моєму випадку це мало бути щось на кшталт "Не вдалося додати AutoHotkey.dll до шляху збирання", оскільки саме це призвело до відмови компілятора.


Якщо це все ще не працює, подивіться на вбудований ErrorLog of Eclipse :

Вікно -> Показати перегляд -> Загальне -> Журнал помилок


27

Я робив усі згадані вище речі, але жодна з них не працювала на мене

Мою проблему вирішили так:

  1. Клацніть правою кнопкою миші на проекті> Властивості> JavaBuildPath> Бібліотеки .
  2. Вийміть файл банку, на ньому червоний прапор.
  3. Якщо проблема не вдається, спробуйте вирішити нижче. Це спрацювало для мене, коли я вдруге зіткнувся з цією проблемою:
    1. Клацніть правою кнопкою миші Проект> Властивості> Шлях збірки Java> Бібліотеки
    2. Видалити бібліотеку
    3. Додати бібліотеку. (Виберіть системну бібліотеку JRE)

працював на мене! У мене також був знак оклику поруч із моєю назвою папки Project. Це також виправлено
бензабіл

Працювали для мене! Спасибі
Друв Каушал

1
це спрацювало, просто видаливши та додавши ту ж саму бібліотеку java JRE
Ендрю Норман

Це спрацювало для мене, хоча не було попередження та знаку оклику
Міхал Леон

Брат, ти буквально щойно врятував мій проект Java Java, ти поняття не маєш, дякую тобі так
Рохан Сінгх

18

Я зіткнувся з подібною проблемою в своєму проекті Maven webapp, витративши майже одну годину, я знайшов рішення, яке працювало для мене. Я набрав наступну команду Maven, і вона спрацювала

mvn чиста установка -U
Я не знаю точну причину цього.


1
Те саме для мене - також не знаю, чому це сталося в першу чергу.
nsof

У затемненні клацнувши правою кнопкою миші Run As..Maven clean, потім Run As..Maven installзробив це для мене. Проблема почалася, коли я змінив проект "Ява затемнення" на проект "Maven eclipse Maven". +1 для вказівки у правій крапці.
CodeMed

-U, - update-snapshots
Здійснює

9

Я припускаю, що ви імпортували проект у вашу установку затемнення? Якщо це так, вам слід просто вибрати Проект> Очистити. Потім відновіть свій проект. Працювало як шарм для мене.


9

У мене була та сама проблема, і я вирішив її за допомогою:

Eclipse Mars
Egit
Github
Maven Project

Проблема полягала в тому, що я зробив свій проект Maven доступним для github. Він перемістив мій проект у папку github.

Рішення:

  • Закрити затемнення
  • Видаліть папку метаданих всередині робочої області
  • Перезапустіть затемнення

Відобразиться екран запуску.

  • Закрийте екран запуску
  • Клацніть правою кнопкою миші в Explorer Explorer
  • Вибрав "проект імпорту Maven",
  • Перейдіть у папку github та імпортуйте проект maven.

Після цього мій проект склався з успіхом.


7

Перевірте, чи має ваш проект розробник:

  • перевірте властивості проекту (у "Explorer Explorer" клацніть правою кнопкою миші на проект, виберіть "властивості"), там другий розділ "Builders", і він повинен містити типовий "Java Builder"
  • або подивіться у файлі ".project" (у ... / робочому просторі / вашомуProjectName / .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>

1
Це зафіксувало це для мене. Вам не потрібно вимикати Eclipse, щоб змінити .projectфайл, ви можете просто закрити проект.
Luís de Sousa

Я, з іншого боку, просто закрив Eclipse (але не редагував .projectфайл. Увімкнув Eclipse, і воно спрацювало: помилка пішла.
Shahar

6

Ну наступне працювало для мене ...

  1. Зайшов у папку проекту (всередині workspace)
  2. Потім видалили binпапку
  3. Потім, очищений проект / проекти (у Eclipse)
  4. побудований / запущений з Eclipse.

Ласкаво просимо до SO, DeeCod. Видалення папки bin та "проект> очищення" та складання вже було запропоновано в інших відповідях. Замість того, щоб публікувати "я теж" як відповідь, я рекомендую отримати достатню репутацію (вам потрібно лише 50), щоб розмістити коментарі та підтвердити, що певний підхід працював для вас у коментарі.
Амос М. Карпентер

1
Спасибі Амос! У будь-якому випадку мені шкода, якщо я помиляюся, наскільки я бачу -> Видалення контейнера перед очищенням / відновленням не пропонується в інших відповідях у цій темі ... Просто Очистити> збірка не працювала за моїм сценарієм ... доки це допомагає комусь :)
DeeCode

Не хвилюйтесь - я натрапив на безліч таких сценаріїв, коли спроби комбінацій дивних речей раптом спрацьовують без видимих ​​причин. ;-)
Амос М. Карпентер

4

Подібне сталося зі мною кілька разів, єдиний спосіб, коли я знав це виправити, - це видалити папку метаданих. На щастя, я знайшов інший спосіб.

Спробуйте перейти до властивостей проекту > Шлях збірки Java> вкладка "Замовлення та експорт"> виберіть усе (або спробуйте пограти з позначками там).

Це повинно спричинити повну перебудову проекту та Eclipse, щоб побачити основний клас.

Доповнення: Я помітив, що ця помилка виникає, коли у вас є багато проектів у робочому просторі, і деякі з них налаштовані неправильно (з'являється червоний знак оклику). Виправлення шляху побудови проекту та інших налаштувань (навіть якщо цей проект не пов’язаний з тим, у кого виникли проблеми) повинні вирішити проблему.


4

Мій Main classне вдалося знайти або завантажити проблему, викликану цікавою причиною.

У нашому проекті ми використовуємо Mavenяк інструмент збирання і мій main class extendsклас, який є, class pathале його сфера була test, поки main classце не знаходиться в рамках тестового пакету.

Якщо ваш основний клас extends- клас, спочатку спробуйте запустити його main class, видаливши extendsчастину. Якщо він працює, то, по крайней мере , зрозуміти , що проблема не з - за run configurationабо eclipseале класу, ваш main class extends.


4

Для мене причина того, що ця помилка почала з’являтися, пов’язана з переходом класу через обмеження на windows. Потім я виявив опцію "Використовувати тимчасовий JAR для вказівки classpath (щоб уникнути обмежень довжини classpath)". Вибір цієї опції вирішив проблему для мене. Цей параметр знаходиться в розділі Run / Debug Configuration, на вкладці Classpath, див. Зображення нижче.

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


3

Ця проблема також виникає, коли у шляху вашого робочого простору є спеціальні символи. Я мав свою робочу область в моїй особистій папці, а її ім’я було грецькою мовою, тому воно не працювало. Я змінив свою робочу область, тепер на її шляху містяться лише англійські символи, і тепер проект побудований без проблем.


3

Якщо ви використовуєте затемнення, наступні кроки вирішать вашу проблему:

Перейдіть до пункту Виконати -> Запустити конфігурації -> Пошук в основному класі -> Знайдіть свій клас вручну -> Застосувати -> Запустити


3

У мене була ця помилка. Це було тому, що я мав static void main(String[] args)
замість цього public static void main(String[] args)

Я витратив майже годину, намагаючись зрозуміти це.

Примітка . Єдина відмінність полягає в тому, що я не заявив mainпро своєpublic


3

Якщо ваш код хороший, і ви знаєте, що у вас проблема з затемненням, це вирішить.

Ви можете просто видалити $ yourproject / .classpath, $ yourproject / .project і $ yourworkspace / .metadata. Хтось ще згадував цей варіант. Однак це підірве всю вашу робочу область. Замість цього:

  1. Видаліть .classpath та .project зі свого проекту
  2. Видаліть проект у затемненні. НЕ перевіряйте видалення вмісту проекту на диску.
  3. Тепер у файловому провіднику перейдіть до $ yourworkspace / .metadata.
  4. Шукайте $ yourprojectname
  5. Видаліть усе, що ви знайдете. Видалити що-небудь у каталог .metadata слід безпечно.
  6. У затемненні: Файл> Імпорт> Загальне> Проекти з папки або архіву> $ yourproject> закінчити
  7. Клацніть правою кнопкою миші ваш проект> властивості> Шлях збірки Java> вкладка Джерело
  8. Виберіть усі вихідні папки, видаліть.
  9. Додати папку, виберіть src (як би не називалася ваша папка src) та додайте її
  10. Перейдіть на вкладку "Бібліотеки"
  11. Додайте сюди будь-які банки до шляху збирання. Зараз у вашому проекті більше не повинно бути помилок.
  12. Запускайте проект так, як зазвичай.

Я перезаписати .classpathі .projectфайл з файлами з іншого проекту, і він працював ... в тому , що збігається або класи дійсно те , що має значення?
Амарт Гюл

Можливо, збіг обставин, оскільки ці файли є специфічними для вашого проекту. Можливо, ви несвідомо змусили затемнення відновити ці файли, вводячи помилки. Відкрийте файл і прочитайте його, і ви отримаєте уявлення про те, що вони роблять. Classpath містить довідники папок libs та src та .project зберігає плагіни та матеріали проекту
Brent Sandstrom

3

це може викликати бібліотеки jdk, якщо ви імпортували в jre

це трапляється зі мною, тому перевірте встановлені банки Jre

у затемненні клацніть на Windows> Налаштування> Java> Встановлений Jres> натисніть на Jre та відредагуйте після цього перегляд у списку jar, переконайтесь, що жоден не має jdk чи пошкоджений, введіть тут опис зображення


2

Я зіткнувся з тією ж проблемою, але в моєму випадку вона була викликана відсутньою (порожньою) вихідною папкою (вона існує в оригінальному проекті, але не в сховищі GIT, оскільки вона порожня).

Після створення відсутньої папки все працює.


2

Я також отримав цю помилку, відразу після переміщення деяких ресурсів. Перевіряючи журнал помилок, я побачив, що Eclipse не може скласти збірку, оскільки не може видалити файл / папку. Спробуйте вручну видалити папку "бін" (або як вона вам називається).

Принаймні, це зробило для мене трюк.


так. після того, як я переміщу проект на git. Проблема трапляється. Я намагаюся це зробити, і мені також потрібно "закрити проект" і "відкрити проект", щоб зробити трюк.
Yeung

2

Я зіткнувся з цією помилкою сьогодні, тому що створив привіт світову програму, а потім вирізав і вставив нову програму в той самий файл. Щоб виправити проблему з тим, щоб не знайти привіт світ, як називався останній, я натиснув Run-> Run Configurations, а потім під Main Class я натиснув на пошук, і він знайшов своє нове ім'я класу та замінив його правильним новим ім'ям у тексті, який я вставив . Це проблема новачків, яку я знаю, але її також легко усунути. Я сподіваюся, що це комусь допоможе! Дуглас


2

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

Оскільки це проект Maven, все, що я зробив, це:

  1. mvn затемнення: чистий
  2. видалити проект затемнення
  3. імпортувати проект
  4. зроблено

сподіваюся, що це допоможе!


2

В основному це відбувається, тому що Eclipse очищає .classфайли, але не створює їх знову. Перевірте binпапку, вона повинна бути порожньою. Тоді вам слід перевірити, чи є ще щось, що спричиняє збій. Можливо, ви додали кілька банок на classpath, які Eclipse, можливо, не зможе знайти.


2

Просто перейдіть до програми Explorer Package і натисніть F5, або для деяких ноутбуків fn + F5. Причина в тому, що затемнення вважає, що файли десь є, але файли насправді десь в іншому місці. Освіживши його, ви розміщуєте їх обох на одній сторінці. Не хвилюйтесь, ви нічого не втратите, але якщо ви хочете бути особливо обережними, просто створіть резервні копії файлів із папки проектів java у іншому місці.


Це працювало для мене. Я зіткнувся з проблемою після оновлення до нової версії Eclipse. Це проект Gradle, і чисте затемнення Gradle не вирішило проблему. Просте оновлення зробило.
ганчірка

2

Це прості кроки, які допомогли мені вирішити цю проблему.

  1. Закрийте затемнення
  2. Видаліть папку ".metadata" у своєму робочому просторі. (може бути прихована папка)
  3. Відкрийте затемнення (воно автоматично створить папку ".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-> Показати перегляд -> Журнал помилок). Якщо ви побачите, що будь-який із імпортованих банок пошкоджений, вийміть відповідну папку сховища та повторно імпортуйте.


2

2 типи розчинів виходять для одного і того ж.

(1) Перейдіть до запуску конфігурацій: - run-> run konfigurations На вкладці Classpath:

Виберіть Додатково Додати, куди Eclipse зазвичай ставить * .class для проектів, який знаходиться у скриньці. Тому я додав каталог проекту для сміття.

(2) Якщо перше рішення не працює, то це означає, що баночка, на яку ви вказуєте ваш проект, йде шляхом вашого місцевого репорта Maven, який не оновлюється до вашого проекту, тож краще ви перевірте банку з цього місцевого репорта Maven і скопіюйте його, вставте його в новий проект, або просто завантажте його з будь-якого сайту та налаштуйте його на шлях створення.

Я сподіваюся, що це допомагає.


1

У мене була така ж проблема. Витратив кілька годин і нарешті змінив робочу область назад у локальну папку, і все працює зараз. Можливо, заощаджує трохи часу для інших. Джон


1

У мене просто з’явилася ця проблема після того, як вперше виникла проблема Windows 8, яка відмовилася оновити свій шлях, незалежно від того, що я встановив JAVA_HOME на - java -version повідомив про останній JDK замість того, який я зберігав у JAVA_HOME. Нарешті я почав це працювати, поставивши "% JAVA_HOME% / bin;" в передній частині змінної середовища контуру, а не в кінці. Потім я запустив Eclipse і раптом він не міг знайти свого основного класу, коли він добре працював до цього. Що я зробив, щоб виправити це, увійшов у властивості проекту, видалив наявну бібліотеку JRE з вкладки "Бібліотеки", додав новий JRE, вибравши кнопку "Додати бібліотеку", а потім дотримувався підказок встановити JRE 7 як мою JRE за замовчуванням. Тепер все повернулося до роботи.


1

У моєму випадку я знайшов інше рішення цієї проблеми: Eclipse->Preferences->Java->Installed JREнатисніть кнопку Пошук. Виберіть папку в Linux/usr тоді Eclipse знайшов усі JVM.

Виберіть інший JVM занадто поточний . Це вирішено для моєї справи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.