Eclipse: Заявлений пакет не відповідає очікуваному пакету


86

У мене проблема з імпортом зовнішнього проекту. Я йду Файл -> Імпорт ... -> Існуючі проекти в робочу область, вибираю папку, де знаходиться проект і все імпортується, - але назви пакетів проекту, схоже, не такі, як очікує Eclipse. Усі назви пакетів мають префікс:

prefix.packagename1
prefix.packagename2

тощо

Але Eclipse очікує

src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2

тощо, оскільки каталог є src / prefix1 / prefix / package1

Я не дуже хочу возитися із зовнішнім кодом. Як сказати Eclipse ігнорувати каталог "src / prefix1"? Або що я ще можу зробити?


Я додав package (name of package under which the file to be ) на початку файлу
Сай Рам,

Відповіді:


105

Просто перейдіть у шлях побудови та змініть вихідний шлях на src/prefix1замість src.

Можливо, найпростіше клацнути правою кнопкою миші на srcкаталозі та вибрати "Побудувати шлях / Видалити із шляху збірки", потім знайти src/prefix1каталог, клацнути правою кнопкою миші та вибрати "Побудувати шлях / Використовувати як вихідну папку".


2
Як я можу скасувати те, що щойно зробив? Я натиснув "Побудувати шлях / Використовувати як вихідну папку", і більше нічого не працює. Редагувати: Відповідь на моє запитання полягає в тому, щоб зайти в "Налаштувати шлях до збірки" і вилучити фанкі зі списку, який не є src / або gen /
ArtOfWarfare

25
Зауважте, що пропозиція Джона працює, але може знадобитися перезапуск затемнення.
Samik R

1
!! Якщо після зміни вихідної папки ви все ще бачите помилку, складіть проект. Затемнення іноді викликає бажання щось розбити.
MattC

4
Закрити / Відкрити prj спрацював для мене ... Eclipse - це великий інструмент, він може іноді забувати щось
niken

Дякую товаришу, чудове рішення.
Runcorn,

70

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

Виявляється, я відкрив файл Java під 'src' перед тим, як оголосити його вихідним каталогом.

Клацнувши правою кнопкою миші на каталог 'src' у eclipse, вибравши 'шлях до побудови', а потім 'Використовувати як вихідну папку'

Закрийте та знову відкрийте вже відкритий файл Java (оновлення F5 не спрацювало).

Надано шлях до файлу java від "prefix1" і далі до рядка з пакетом у файлі (приклад із запитання запитувача prefix1.prefix.packagename2). Це має спрацювати

Eclipse більше не повинен скаржитися на "src".


1
Це було все. Досить просто, але на деякий час мене застрягло. Дякую!
Крістіан В'єльма

Після встановлення шляху збірки закриття та повторне відкриття файлу було потрібно і мені. Дякую!
видання

Так! Працював і у мене.
Роберт Кейсі,

11

Перемістіть свою проблему * .java файли в іншу папку.

Клацніть елемент 'src' та натисніть "F5".

Червоні хрести будуть неприємні.

Поверніть файли * .java у "шлях до пакета", натисніть елемент "src" і натисніть "F5".

Все повинно бути добре.


2

Якщо ви імпортували існуючий проект, просто видаліть вихідні папки, а потім додайте їх знову, щоб побудувати шлях, і перезапустіть eclipse. У більшості випадків eclipse буде продовжувати відображати помилку, поки ви не перезапуститесь.


1

У мене трапляється після того, як невдалі збірки запускаються за межі IDE. Якщо очищення робочої області не працює, спробуйте: 1) Видалити всі проекти 2) Закрити та перезапустити STS / eclipse, 3) Повторно імпортувати проекти


1

Єдине, що мені вдалося, це видалити проект, а потім знову імпортувати. Працює як шарм :)


0

Ця проблема виникає в Eclipse іноді під час імпортування проекту Android, який не має файлу .classpath. Той, який створює Eclipse, не зовсім той самий, який очікує Android. Але файли .classpath Android, як правило, відносні, тому я просто копіюю правильний файл .classpath з іншого проекту над неправильним .classpath. Я створив відео, яке показує, як я це роблю: https://www.youtube.com/watch?v=IVIhgeahS1Ynto


0

Припустимо, у вашому проекті є такий пакет package name1.name2.name3.name4 (оголошений пакет)

Провідник пакунків показує
пакет найвищого рівня з назвою name1.name2
підпакети з назвою name3.name4

Ви матимете помилки, оскільки Eclipse витягує ім'я пакета зі структури каталогу файлів на диску, починаючи з пункту імпорту.

У моїй справі було трохи більше участі, можливо тому, що я використовував символічне посилання на папку за межами моєї робочої області.

Спочатку я спробував побудувати Path.Java Build Path.Source Tab.Link Source Button. Перейдіть до папки перед name1 у вашому пакунку.Folder-name, як вам подобається (я думаю). Але були проблеми.

Потім я видалив папку зі шляху збірки і спробував Файл> Імпорт ...> Загальне> Файлова система> натисніть Далі> З каталогу> Огляд ... у папку над ім'ям1> натисніть кнопку Додатково> поставте прапорець Створити посилання у робочій області> натисніть Готово кнопку.


Правда. У моєму випадку до імені проекту було додано постфікс, -2.0.0-SNAPSHOT. Видалив цей префікс (перейменувати проект ..) і все запрацювало.
JRun

0

Перейдіть до папки src проекту та скопіюйте весь код з нього в якесь тимчасове місце та побудуйте проект. А тепер скопіюйте фактичний код із тимчасового розташування до проекту src. І знову запустіть збірку. Проблема буде вирішена.

Примітка: Це характерно для затемнення.


0

У мене зараз трапилася та сама проблема. Однак перші кілька відповідей не працюють для мене. Я пропоную рішення: змінити файл .classpath. Наприклад, ви можете визначити шлях до вузла classpathentry таким чином: path = "src / prefix1 / java" або path = " src / prefix1 / resources ". Сподіваюся, це може допомогти.


0

Для мене проблема полягала в тому, що я перетворював існуючий проект на maven, створював структури папок відповідно до документації, і він відображав "основну" папку як частину пакету. Я дотримувався вказівок, подібних до Jon Skeet / JWoodchuck, і зайшов у шлях збірки Java, видалив усі непрацюючі шляхи збірки, а потім додав мій шлях збірки до 'src / main / java' та 'src / test / java', а також як папки ресурсів для кожного, і це вирішило проблему.


0

Шлях збірки повинен містити шлях "до" до імені пакета.

Наприклад, якщо структура папки така: src/main/java/com/example/dao Якщо клас, що містить оператор імпорту, 'package com.example.dao'скаржиться на неправильну помилку пакету, тоді шлях побудови include:src/main/java повинен вирішити проблему.


-1
  1. Клацніть правою кнопкою миші на зовнішній папці, що містить пакет
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. Клацніть Шлях побудови -> Видалити зі шляху побудови.

  2. Тепер перейдіть до папки prefix1 у розділі папок вашого проекту.

  3. Клацніть правою кнопкою миші -> Шлях побудови -> Використовувати як вихідну папку.

  4. Готово. Папка пакунків зараз не відображатиме помилок. Якщо воно все ще відображається, просто перезапустіть проект.

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