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
Обратите внимание, что предложение Джона работает, но может потребоваться перезапуск eclipse.
Samik R
1
!! Если вы все еще видите ошибку после изменения исходной папки, соберите проект. Eclipse иногда вызывает у меня желание что-нибудь разбить.
MattC
4
Close / Open prj у меня сработал ... Eclipse - большой инструмент, он иногда может что-то забыть
niken
Спасибо, дружище, отличное решение.
Runcorn
70

Я только что столкнулся с этой проблемой, и, поскольку решение мистера Скита у меня не сработало, я расскажу, как я решил эту проблему.

Оказывается, я открыл java-файл в 'src' перед тем, как объявить его исходным каталогом.

После щелчка правой кнопкой мыши по каталогу 'src' в eclipse, выбора 'build path', а затем 'Use as Source Folder'

Закройте и снова откройте уже открытый java-файл (обновление F5 не помогло).

Указанный путь к java-файлу от «prefix1» и далее совпадает с пакетом в файле (пример из вопроса prefix1.prefix.packagename2 запрашивающей стороны). Это должно работать

Eclipse больше не должен жаловаться на src.

Кайл Шанафельт
источник
1
Это было оно. Довольно просто, но на какое-то время я застрял. Благодарность!
Christian Vielma
После установки пути сборки закрытие и повторное открытие файла мне тоже понадобилось. Благодарность!
ed
Да! У меня тоже сработало.
Роберт Кейси,
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

user3649912
источник
0

Предположим, в вашем проекте есть такой пакет package name1.name2.name3.name4 (объявленный пакет)

В проводнике пакетов отображается
верхний уровень
пакета с именем name1.name2, подпакеты с именем name3.name4

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

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

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

Затем я удалил папку из пути сборки и попробовал «Файл»> «Импорт ...»> «Общие»> «Файловая система»> нажмите «Далее»> «Из каталога»> «Обзор ...» до папки над именем 1> нажмите кнопку «Дополнительно»> установите флажок «Создать ссылки в рабочей области»> нажмите «Готово». кнопка.

ДарКорам
источник
Правда. В моем случае к имени проекта был добавлен постфикс -2.0.0-SNAPSHOT. Удалил этот префикс (переименовать проект ..), и все заработало.
JRun
0

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

Примечание: это характерно для eclipse.

Дипак Гупта
источник
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. Выполнено. Папка пакета теперь не будет показывать никаких ошибок. Если он все еще отображается, просто перезапустите проект.

Прамод Шетти
источник