Eclipse "цей блок компіляції не знаходиться на шляху збірки Java-проекту"


78

Я не можу домогтися автозавершення для роботи на Eclipse.

Я працюю над проектом на svn. Я створив проект в Eclipse, зайшовши в

Файл -> Імпорт -> Оформити як проект -> Майстер нового проекту.

Я вибираю Enterprise Java Application, і вона завантажується. І все, здається, працює нормально, за винятком того, що замість цього працює автозаповнення, як я очікую, я отримаю спливаюче діалогове вікно, що відображає повідомлення

Цей блок компіляції не знаходиться на шляху побудови Java-проекту.

Я погуглив, але всі кажуть, що проект повинен бути проектом Java. Але ей це! В чому проблема?

Оновлення

Структура каталогу на svn виглядає так:

-Project_name
  -application
     -META-INF
       application.xml
       MANIFEST.MF
  +build
  +db
  +deploy
  +dist
  +lib
  +properties
  +script
  -src
     -META-INF
        someother.xml (datasource info)
        persistence.xml
        folder hierarchy with source files (should be package)
  -web
     some folders
          .
          .
     files
       .
       .
     -WEB-INF
        faces-config.xml
        jboss-web.xml
        web.xml
     build_win.xml

Як визначити Eclipse, де знаходяться папка з вихідними файлами, application.xml та інші конфігураційні файли xml?


Ви перевіряли stackoverflow.com/questions/908489/… ?
VonC

Відповіді:


132

Якщо у вас є багатомодульний проект maven під батьківським проектом, переконайтеся, що ви не редагуєте файл у батьківському проекті maven.


19
ця відповідь повинна мати більше злетів, у проекті з вкладеними дочірніми модулями / проектами, навігація eclipse та провідник пакунків відображатимуть кожен файл дочірнього проекту під кожним наступним батьком, а також самостійно. під час редагування, щоб мати автозаповнення, все інше, запропоноване в інших відповідях вище, є правильним, ви повинні використовувати те, що використовує дочірній проект самостійно (тобто не під будь-яким батьківським проектом) у провіднику.
Pete_ch

2
Я не можу зрозуміти, як редагувати клас лише у батьківському проекті ?? То чому ти кажеш не робити цього? У мене є батьківський проект, є підпроекти / модулі, і я редагував один із них, при якому виникла дана помилка.
Саміта Чатуранга

Пафосно просто. Повинна бути прийнята відповідь, якщо ця проблема не може виникнути в проектах, що не
стосуються

+1. Зі мною сталося, що я зробив a ctrl + Hі шукав у файлах якийсь текст . У результатах з’явився файл, тому я натиснув на нього і не зрозумів, що файл, в якому я перебуваю, був відкритий через батьківський замість дочірнього модуля. Я отримав цю помилку, коли намагався ввести class.method.
програхаммер

Я хотів би додати, що ви побачите в такій ситуації той самий файл, мабуть, у двох "різних" місцях, але, як вказує відповідь, редагуйте його під самим проектом, а не батьківським проектом.
Джефф

17

Що я зробив, щоб один зі своїх проектів перевірити належним чином, - це

1) Імпортуйте свій проект з svn

      file-->import-->SVN-Checkout Projects From SVN

2) Знайдіть свій проект, а потім у діалоговому вікні "Оформити як" переконайтеся, що вибрано перемикач "Оформити як проект, налаштований за допомогою майстра нового проекту"

3) Пройдіть звичайні кроки.

Майстер правильно витягує проект, а потім налаштовує ваше затемнення ....

без використання майстра я виявляю, що все пекло розбивається .....

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


17

Це те, чого не вистачало у моєму файлі .project:

    <projectDescription>
        ...
        <buildSpec>
            <buildCommand>
                <name>org.eclipse.jdt.core.javabuilder</name>
                <arguments>
                </arguments>
            </buildCommand>
        </buildspec>
        ...
        ...
        ...
        <natures>
            <nature>org.eclipse.jdt.core.javanature</nature>
            <nature>org.eclipse.m2e.core.maven2Nature</nature>
        </natures>
        ...
    </projectDescription>

Додавання природи jdt.core до мого файлу .project це виправило для мене.
Урчин

Після вищезазначених змін мені довелося клацнути правою кнопкою миші на проекті, вибрати Maven та оновити проект, щоб ввести ці зміни. Тоді це спрацювало.
Kumar S

10

У мене час від часу виникає ця проблема, і часто це тому, що проект не був позначений як java-проект. Ви можете змінити це, перейшовши до властивостей проекту> Грані проекту> та вибравши java. Тоді вам може знадобитися правильно налаштувати цей проект, але це, мабуть, частина проблеми


5

У мене також була ця проблема після перетворення мого Java-проекту на maven-проект. Я вирішив це наступним чином:

Клацніть правою кнопкою миші на своєму проекті -> Грані проекту -> клацніть на Java, а потім застосувати.


Я використовую STS 3.8.2 і імпортував проект за папкою. Файли Java знаходились в одному підкаталозі, а не в стандартному src/main/javaрозташуванні. Я не впевнений, що в цьому була проблема, але в меню запуску не було опцій. Дякую, це дуже допомогло; було кілька додаткових кроків. Мені потрібно було піти Propertiesраніше Project Facets. Також є Runtimesвкладка, де мені потрібно було вибрати свою версію Java.
wsams

4

У вас був файл .project у ваших папках?

У мене така сама проблема. Тоді я зрозумів, що у мене немає файлу .project.


4

Можливо, я вибираю неправильні речі із такої кількості коментарів, але якщо ви використовуєте Maven, то чи виконуєте ви звичайну командний рядок для побудови та очищення?

Перейдіть до cmd, перейдіть до робочої області (зазвичай c: / workspace). Потім запустіть "mvn clean install -DskipTests"

Після цього запустіть "mvn eclipse: eclipse eclipse: clean" (не потрібно турбуватися про трубопроводи).

Крім того, чи є у вас якісь залежності модулів у ваших проектах?

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

Сподіваюся, це допомагає!


Чи не має бути замість цього "mvn eclipse: clean eclipse: eclipse"? Якщо я правильно розумію вашу команду, вона спочатку генерує проект Eclipse і відразу ж видаляє його - це схоже на помилку.
Frank Schmitt

2

Я скопіював .classpath та .project з іншого проекту та правильно відкоригував значення.

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

Робоча область перебудована, і з цього часу всі повинні працювати.


2

у моєму випадку це проект maven

видалити проект із eclipse, залишивши джерела закрити eclipse delete з файлової системи

.target / .classpath .project .settings / open eclipse Again Імпорт проектів Maven

Це вирішило проблему


2

Можливо, ви захочете запустити eclipse за допомогою параметра -clean startup - він намагається відновити метадані eclipse робочої області.



1

Ось кроки для створення вихідної папки в eclipse.

  1. Клацніть правою кнопкою миші на проекті та перейдіть до властивостей
  2. Виберіть "Шлях побудови Java" у діалоговому вікні властивостей
  3. Виберіть вкладку джерела та перевірте правильність вихідних папок, якщо не натиснути кнопку видалення, щоб видалити вихідні папки, або кнопку додавання, щоб додати вихідні папки.

Ви можете контролювати порядок, у якому вихідні папки відображатимуться у проекті на вкладці "Замовлення" та "Експорт" у параметрі "Налаштування шляху побудови".


1

Була та сама проблема (але з Maven). Причиною був неправильний вибір виконавця: у моєму проекті використовувались глобальні налаштування, недоступні для вбудованої інсталяції Maven. Змінив його на зовнішній (Вікно -> Налаштування -> Maven -> Встановлення), і це вирішило проблему.


1

Що я зробив, так це після того, як імпортував проект зі svn, видалив проект із робочої області та імпортував його як проект maven з локального. Потім у налаштуваннях-> maven-> usersettings-> у полі usersettings вказав шлях settings.xml, який буде в папці apache maven-> conf-> settings.xml

і це вирішило проблему для мене.


1

Ваші вихідні файли повинні мати структуру із піктограмою "пакет" у поданні Провідника пакетів (у меню під Вікном > Показати вигляд > Провідник пакетів або натисніть Ctrl+ 3і введіть пакет ), наприклад:

Проект Java у Eclipse

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


Але це проект Java Enterprise. Коли я клацаю правою кнопкою миші на будь-якій папці, немає такого поняття, як «Використовувати як вихідну папку».
l245c4l

@ l245c4l: Спробуйте зробити це у поданні Провідника пакетів (редагував мою відповідь, щоб додати деталі).
Фабіан Стіг

Ні, це теж не працює. У меню такого елемента немає. Перевірте своє запитання ще раз, я оновив його, так що зараз існує структура проекту svn. Дякую за ваш час.
l245c4l

0

Як сказано в повідомленні, файл знаходиться десь на шляху побудови Java (наприклад, у вихідній папці)?


0

Була та сама проблема. Рішення: Контекстне меню -> Maven -> Увімкнути управління залежностями

Не знаю, чому це було втрачено під час виїзду.


0

Я виявив, що отримав цю помилку через те, що мої файли, включаючи мій основний клас, знаходились поза папкою .src.


0

У мене спрацювало копіювання каталогу .settings / з іншого проекту.


0

Запустіть "mvn eclipse: eclipse" з терміналу.


2
Хоча цей код може відповісти на питання, надання додаткового контексту щодо того, як та / або чому він вирішує проблему, покращило б довгострокове значення відповіді. Пам’ятайте, що ви відповідаєте на запитання читачам у майбутньому, а не лише тому, хто задає зараз! Будь ласка, відредагуйте свою відповідь, щоб додати пояснення та вказати, які обмеження та припущення застосовуються. Також не завадить згадати, чому ця відповідь є доречнішою за інші.
Dev-iL

0

Якщо ви новачок (як я), рішення може бути таким простим, як переконатися, що батьківська папка, у якій працює файл, є проектом Java.

Я зробив помилку, просто створивши папку Java, а потім створивши файл у папці та очікуючи, що вона запрацює. Файл повинен працювати в проекті, якщо ви хочете уникнути цієї помилки.


0

У мене була така сама проблема після імпорту проекту maven, що складається з вкладених мікросервісів. Ось як я це вирішив у Eclipse:

  1. Клацніть правою кнопкою миші на проекті
  2. Виберіть Налаштувати
  3. Виберіть "Налаштування та виявлення вкладених проектів"

-1

Наприклад, якщо є 4 проекти та кореневий проект, додайте інші дочірні проекти, щоб побудувати шлях до кореневого проекту. Якщо шлях до збірки не вибрано, додайте нижче коди до файлу .project.

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>rootProject</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

-1
  1. Видаліть свій проект (НЕ ВИДАЛЯЙТЕ ФАЙЛ ПОХОДЖЕННЯ В ФАЙЛОВОЇ СИСТЕМІ)
  2. Клацніть правою кнопкою миші в області Провідника пакетів та клацніть правою кнопкою миші імпорт.
  3. Перейдіть до папки Maven та натисніть імпорт існуючого проекту maven.

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

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