Объявленный пакет не соответствует ожидаемому пакету ""
Я использую Eclipse и никогда не использовал Java. Тем не менее, я могу скомпилировать свой код в командной строке только отлично и сгенерировать необходимые файлы .class
. В Eclipse он жалуется, что The declared package "Devices" does not match the expected package ""
. Что это значит и как я могу это исправить?
Пример кода:
package Devices;
public final class DevFrequency
{
public short messageID;
public double frequency;
public short converterID;
public DevFrequency()
{
}
public DevFrequency(short _messageID,double _frequency,short _converterID)
{
messageID = _messageID;
frequency = _frequency;
converterID = _converterID;
}
}
Название моего проекта DeviceDDS
.
Ответы
Ответ 1
Eclipse ожидает, что объявленный пакет будет соответствовать иерархии каталогов - поэтому он ожидает, что ваш файл Java будет находиться в каталоге под названием "Устройства" под вашим исходным корнем. На данный момент это похоже, что файл находится прямо в исходном корне. Поэтому создайте соответствующий каталог и переместите туда файл.
Обратите внимание, что обычно пакеты находятся в нижнем регистре и включают название вашей организации в порядке обратного DNS, например
com.foo.devices;
Ответ 2
Решение 1: Одно решение, которое работало для меня, когда эта ошибка " Объявленный пакет не соответствует ожидаемому пакету", произошел для проекта, который я проверил из eclipse CVS:
1. Щелкните правой кнопкой мыши проект на панели навигации и нажмите "удалить"
2. Убедитесь, что флажок Удалить содержимое проекта на диске 'отмечен НЕ и нажмите "ОК".
3. Теперь после удаления проекта перейдите в Файл → Импорт → Общие → Существующие проекты в рабочее пространство
4. Выберите рабочую область из списка каталогов и установите флажок рядом с названием вашего проекта. Нажмите " Готово"
Решение 2: Снова я получил эту ошибку со следующим сообщением
Ошибки сборки Eclipse - java.lang.Object не может быть разрешен
Я должен был следовать за другим упоминанием о маршруте, и ошибка исчезла.
В то же время работа вокруг заключается в том, чтобы удалить Системную библиотеку JRE из проекта, а затем снова добавить ее.
Вот шаги:
- Перейдите к свойствам проекта с ошибкой сборки (щелкните правой кнопкой мыши > Свойства). Перейдите на вкладку "Библиотеки" в разделе "Путь сборки". Найдите в списке "Системную библиотеку JRE" (если этого не хватает, то это сообщение об ошибке не является ошибкой затмения, но неправильно сконфигурированным проектом)
- Удалите "Системную библиотеку JRE"
- Нажмите "Добавить библиотеку...", выберите "JRE System Library" и добавьте соответствующую JRE для проекта (например, "Рабочая область по умолчанию JRE" )
- Нажмите "Готово" в выборе библиотеки и "ОК" в свойствах проекта, а затем дождитесь повторной сборки проекта
Мы надеемся, что ошибка будет решена...
Ответ 3
Попробуйте закрыть и снова открыть файл.
Эту ошибку можно получить в Eclipse, если в расположении файла или объявлении пакета нет ничего плохого. Попробуйте это, прежде чем тратить много времени на пробу этих других решений. Иногда затмение просто запутывается. Это сработало для меня несколько раз. Я приписываю эту идею Джошуа Голдбергу.
Ответ 4
У меня была эта проблема - другие классы внутри моего пакета были в порядке, но у одного класса была ошибка. В объявлении пакета не было ничего плохого.
Я исправил его, выполнив refactor->move
и временно переместив класс в другой пакет, а затем refactor->move
обратно в исходный пакет.
Ответ 5
Я решил проблему, выполнив следующие шаги:
-
Выберите проект - Щелкните правой кнопкой мыши - путь сборки java.
-
На вкладке источника - вы меняете src
на src/main/java
.
-
Eclipse изменит порядок всех проектов.
Ответ 6
Создайте новый пакет под своим проектом под названием "Устройства" и поместите в него свой класс. Это эквивалентно тому, что класс помещается в каталог "Устройства" в исходную папку проекта.
Ответ 7
Вам нужно иметь класс внутри папки Devices
.
Ответ 8
Убедитесь, что Devices
определяется как исходная папка в свойствах проекта.
Ответ 9
Получил такую же ошибку, но мой пакет был абсолютно прав. Когда я только закрыл и открыл свой редактор, ошибка исчезнет. Надеюсь, это может помочь в некоторых сценариях.
Ответ 10
Убедитесь, что вы создали правильный пакет. У вас может возникнуть возможность создать папку вместо пакета
Ответ 11
-
Создайте каталог [your.project.name] в корневом каталоге рабочего пространства вашего проекта.
-
Скопируйте *.java из "src" в этот каталог.
-
Закрыть и снова открыть проект.
Ответ 12
Это случилось со мной, когда я просматривал проект из репозитория svn в eclipse. В моей папке .m2 были файлы jar, которые не наблюдалось затмение. Чтобы устранить проблему, я сделал:
щелкните правой кнопкой мыши папку проекта Configure > Convert to Maven Project
и это решило проблему.
Ответ 13
Есть миллион ответов, но вот еще один:
скопируйте файлы в новый пакет, удалите старый пакет и переименуйте новый пакет в старое имя пакета.
Ответ 14
Убедитесь, что вы не используете пакет по умолчанию. Создайте новый пакет с именем "устройства" и скопируйте этот код внутри него и используйте.
Ответ 15
У меня были такие ситуации, когда я копировал классы из других пакетов/проектов.
Меню- > Проект- > Чистота обычно помогает.
Ответ 16
В моем случае я выбрал маркер ошибки на вкладке "Проблемы" и удалил его, поскольку основной метод файла Java был выполнен правильно. Это некоторый сбой в Eclipse Neon с множеством подключаемых модулей, которые он установил.
Ответ 17
Я исправил это, удалив атрибут "исключая" для этого пакета в моем файле .classpath
. Удалите атрибут, а не весь тег, или "src/java" перестанет быть исходной папкой.
<classpathentry excluding="com/myproject/mypackage/mysubpackage/" kind="src" path="src/java"/>
Ответ 18
Я тоже столкнулся с этой проблемой, когда импортировал существующий проект для затмения. Это был простой проект, но при импорте я импортировал его как обычный проект, щелкнув General-> Существующие проекты в рабочей области. Чтобы решить эту проблему, я добавил Gradle nature в проект с помощью :: Щелкните правой кнопкой мыши папку Project → Configure-> Add Gradle Nature