Имя пакета не соответствует пути к файлу - IntelliJ
Я пытаюсь импортировать проект из VCS (ну, я делаю это в первый раз на самом деле), и это моя (импортированная) структура проекта:
![The file structure]()
BTW. этот экран создается после многих попыток изменения свойств этих каталогов (в их контекстных меню).
В этих исходных файлах "я имею следующую ошибку:
![The error in the editor]()
Одно время он ничего не имел против badugi.client
, но сообщал об этой ошибке только в badugi.server
. Я совершенно не знаю, как это работает...
Также классы в тех же каталогах не видят друг друга.
![Error]()
Это код из класса ClientWorker
, который находится (как вы видите на первом изображении) в том же каталоге, что и Server
, поэтому он должен знать, что такое Server
.
Я уверен, что этот код хорошо работал в моей дружественной среде IDE. Как настроить IntelliJ, чтобы он работал?
Ответы
Ответ 1
Судя по структуре каталогов, у вас есть два пакета клиент и сервер, но код ожидает пакеты badugi.client и badugi.server.
Вот как это исправить:
- Поместите курсор на подчеркнутый оператор пакета (
package badugi.server
)
- Хит ALT + ENTER
- Выберите опцию Переместить в пакет badugi.server. Это автоматически исправит вашу структуру каталогов в соответствии с объявленным пакетом
или
- Щелкните правой кнопкой мыши src в проводнике проекта.
- Выберите Новый/Пакет и создайте пакет badugi
- Выберите пакеты клиента и сервера и перетащите их в пакет badugi.
Ответ 2
У меня была такая же проблема, и я исправил ее, изменив файл моего проекта .iml:
From:
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/wrong/entry/here" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
To:
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
Как только папка пакета была указана в качестве корневого исходного каталога при импорте этого проекта.
Ответ 3
Я видел эту ошибку несколько раз, и я всегда мог ее решить, правильно определяя настройки модуля проекта. В IntelliJ щелкните правой кнопкой мыши проект верхнего уровня → "Открыть параметры модуля". Это должно открыть окно со всей структурой проекта и содержимым, идентифицированным как "Папки-источники", "Папки тестовых источников" и т.д. Убедитесь, что они правильно установлены. Для "исходных папок" убедитесь, что папка - это ваш src/или src/java (или независимо от вашего исходного языка), так как это может быть
Ответ 4
Добавьте это в pom.xml
(внутри тега project
)
<build>
<sourceDirectory>src/main/java</sourceDirectory>
</build>
src/main/java
- это исходная папка, которую вы хотите установить. Если у вас уже есть эта строка в файле pom.xml
, проверьте правильность.
Ответ 5
Вы должны объявить в структуре проекта (Ctrl + Alt + Shift + s) в разделе "Модуль" отметьте ваши папки, из которых они являются исходным пакетом (синий) и которые являются тестами...
Ответ 6
У меня были те же проблемы из-за поврежденных или, возможно, устаревших файлов intellij. До обновления до 14.0.2 у меня был отлично работающий проект с ПРАВИЛЬНО именованными пакетами и файловыми иерархиями.
После обновления компиляции maven работали без сбоев, но Intellij сообщал об указанной ошибке на конкретном пакете (другие пакеты с похожими характеристиками не были затронуты).
Я не стал вдаваться в подробности, но я удалил свои файлы .iml и папки .idea, аннулировал кэши, перезапустил IDE и снова открыл проект, опираясь на мою конфигурацию maven.
ПРИМЕЧАНИЕ. Это эффективно удаляет настройки запуска и отладки!
Может быть, кто-то, кто понимает файлы рабочей области intellij, мог бы прокомментировать это?
Еще один комментарий для тех, кто ищет это дальше: Рефакторинг в проектах, управляемых SC, может оставить после себя пыль - у меня есть "старая" папка, в которой есть повторы текущей структуры пакета. Если файлы .iml или .idea имеют какие-либо ссылки на эти пакеты, вполне вероятно, что intellij может быть перепутан со ссылками на старые пакеты. Удачи, товарищи StackExchangers.
Обновление: я удалил некоторые файлы в проекте maven, на который ссылаются, и причуды вернулись. Итак, мой пост ни в коем случае не является окончательным ответом.
Ответ 7
Я просто сражался с подобной проблемой. Моим решением было установить исходный исходный файл для модуля Intellij в соответствии с исходной корневой папкой проекта. Затем мне нужно было отметить некоторые папки как Исключенные в панели навигации проекта (тот, который не должен использоваться в новом проекте, для меня это было частью, используемой под Android). Это все.
Ответ 8
Может быть, кто-то сталкивается с аналогичным предупреждением, которое я получил с проектом Scala
Имена пакетов не соответствуют структуре каталогов, это может вызвать проблемы с разрешением на классы из этого файла. Проверка файлов с оператором пакета, который не соответствует структуре пакета.
Файл находился в правильном месте, поэтому вспомогательные решения, которые предоставляет IDE, бесполезны
Перемещение файла говорит, что файл уже существует (это правда), и Rename Package фактически переместит его в неправильный пакет.
Проблема в том, что если у вас есть объекты Scala, вы должны убедиться, что первый объект в файле имеет то же имя, что и имя файла, поэтому решение состоит в том, чтобы переместить объекты внутри файла.
Ответ 9
Котлин
Для тех, кто использует Kotlin, которые следуют соглашениям пакета документов:
В чистых проектах Kotlin рекомендуемая структура каталогов должна соответствовать структуре пакета с опущенным общим корневым пакетом (например, если весь код в проекте находится в пакете "org.example.kotlin" и его подпакетах, файлы с "org"). Пакет .example.kotlin "должен быть размещен непосредственно под исходным корнем, а файлы в" org.example.kotlin.foo.bar "должны находиться в подкаталоге" foo/bar "исходного корня).
IntelliJ пока не поддерживает это. Единственное, что вы можете сделать, это отключить это предупреждение и признать, что IDE не поможет вам с рефакторингом, когда дело доходит до изменения структуры папок/файлов.
Ответ 10
Я создал пакет в папке src, который решил эту проблему.
структура проекта
Ответ 11
Это сложно здесь. В моем случае структура папок была такой:
ком /APPNAME/rateUS/модели /FileName.java
Имя пакета, которое я указал в файле FileName.java:
package com.appName.rateUs.models;
Обратите внимание на небольшую разницу между именем пакета: оно должно быть rateUS вместо rateU s
Надеюсь, это поможет кому-то!
Ответ 12
Можно указать Intellij игнорировать эту ошибку.
Файл > Настройки > Редактоp > Инспекции, затем найдите "Неверная инструкция пакета" (под Java, Вероятные ошибки) справа и снимите флажок.