Имя пакета не соответствует пути к файлу - IntelliJ

Я пытаюсь импортировать проект из VCS (ну, на самом деле, я делаю это впервые), и это структура моего (импортированного) проекта:

Структура файла

КСТАТИ. этот экран сделан после многих попыток изменить свойства этих каталогов (в их контекстных меню).

В этих исходных файлах у меня есть следующая ошибка:

Ошибка в редакторе

Одно время это не имело ничего против badugi.client но он сообщил об этой ошибке только в badugi.server, Я понятия не имею, как это работает...

Также классы в одних и тех же каталогах не видят друг друга.

ошибка

Это код из ClientWorker класс, который расположен (как вы можете видеть на первом изображении) в том же каталоге, что и Server так что надо знать что Server является.

Я уверен, что этот код хорошо работал в IDE моего друга. Как настроить IntelliJ, чтобы он работал?

17 ответов

Решение

Судя по структуре каталогов, у вас есть два пакета клиент и сервер, но код ожидает пакеты badugi.client и badugi.server.

Вот способ исправить это:

  1. Поместите курсор на подчеркнутое выражение пакета (package badugi.server)
  2. Хит ALT + ENTER
  3. Выберите опцию Переместить в пакет badugi.server. Это автоматически исправит вашу структуру каталогов в соответствии с заявленным пакетом

или же

  1. Щелкните правой кнопкой мыши src в Project Explorer
  2. Выберите New/Package и создайте пакет badugi.
  3. Выберите клиентские и серверные пакеты и перетащите их в пакет badugi.

У меня была такая же проблема, и я исправил ее, изменив файл.iml моего проекта:

От:

<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>

Для того, чтобы:

<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>

Каким-то образом папка пакета стала указана в качестве корневого исходного каталога, когда этот проект был импортирован.

Я тоже видел эту ошибку несколько раз, и мне всегда удавалось ее исправить, правильно указав настройки модуля проекта. В IntelliJ щелкните правой кнопкой мыши проект верхнего уровня -> "Открыть настройки модуля". Это должно открыть окно со всей структурой проекта и содержимым, идентифицированным как "Исходные папки", "Тестовые исходные папки" и т. Д. Убедитесь, что они установлены правильно. Для "Исходных папок" убедитесь, что папка - это ваш src/ или src/java (или любой другой ваш исходный язык), в зависимости от ситуации.

Добавьте это к pom.xml(внутри project тег)

<build>
  <sourceDirectory>src/main/java</sourceDirectory>
</build>

src/main/java является исходной папкой, которую вы хотите установить. Если у вас уже есть эта строка в вашем pom.xml файл, проверьте, правильно ли это.

Можно сказать Intellij игнорировать эту ошибку.

Файл> Настройки> Редактор> Проверки, затем найдите "Неверный оператор пакета" (В Java, возможные ошибки) справа и снимите флажок.

Вы должны объявить в структуре проекта (Ctrl+Alt+Shift+s) в разделе Модуль пометить ваши папки, какие из них являются исходным пакетом (синий), а какие тестовые...

У меня были те же проблемы из-за поврежденных или, возможно, устаревших файлов intellij. До обновления до 14.0.2 у меня был отлично работающий проект с ПРАВИЛЬНО именованными пакетами и файловыми иерархиями.

После обновления компиляции maven работали без сбоев, но Intellij сообщал об указанной ошибке в конкретном пакете (другие пакеты с похожими характеристиками не были затронуты).

Я не удосужился заняться дальнейшим расследованием, но я удалил свои файлы.iml и папки.idea, аннулировал кэши, перезапустил IDE и снова открыл проект, опираясь на мою конфигурацию maven.

ПРИМЕЧАНИЕ. Это эффективно удаляет настройки запуска и отладки!

Может быть, кто-то, кто понимает файлы рабочего пространства intellij, мог бы прокомментировать это?

Еще один комментарий для тех, кто ищет это дальше: Рефакторинг в проектах, управляемых SC, может оставить после себя пыль - у меня есть "старая" папка, в которой есть повторы текущей структуры пакета. Если файлы.iml или.idea имеют какие-либо ссылки на эти пакеты, вполне вероятно, что intellij может быть перепутан со ссылками на старые пакеты. Удачи, товарищи StackExchangers.

Обновление: я удалил некоторые файлы в проекте Maven, на который ссылаются, и причуды вернулись. Итак, мой пост ни в коем случае не является окончательным ответом.

Котлин

Для тех, кто использует Kotlin, которые следуют соглашениям пакета документов:

В чистых проектах Kotlin рекомендуемая структура каталогов должна соответствовать структуре пакета с опущенным общим корневым пакетом (например, если весь код в проекте находится в пакете "org.example.kotlin" и его подпакетах, файлы с "org"). Пакет.example.kotlin "должен быть размещен непосредственно под исходным корнем, а файлы в" org.example.kotlin.foo.bar "должны находиться в подкаталоге" foo / bar "исходного корня).

IntelliJ пока не поддерживает это. Единственное, что вы можете сделать, это отключить это предупреждение и признать, что IDE не поможет вам с рефакторингом, когда дело доходит до изменения структуры папок / файлов.

Я создал пакет в папке src, который решил эту проблему.

структура проекта

Мне помогло это видео с отметкой времени 2:48.

Попробуйте создать новый класс Java с интерфейсом IntelliJ с именемcom.example.packagename.YOUR_CLASS_NAME.

Затем IntelliJ автоматически правильно создал пакет для меня.

Для меня проблема заключалась в том, что я реорганизовал пакет на другое имя, и по какой-то причине IntelliJ вернул его (хотя имя пакета с точки зрения отслеживания git не изменилось). Я снова изменил его на новое имя, и это устранило проблему.

Просто создайте еще один Packageи переместите в нее все папки! все ошибки удалят

Самое простое решение - просто переименовать первую строку в каждом классе.

Например

IntelliJ сообщает нам, что имя пакета должно быть «module09.nationalratswahlen».

Текущее название - "oop2.module09.nationalratswahlen".

Просто нажмите Control-Shift-R и замените «oop2.module09» на «module09» во всех файлах. Однако обычно вы должны просто клонировать репозиторий, выбрав «Файл»> «Создать»> «Проект» из системы управления версиями. Тогда вы избежите таких проблем.

Я просто боролся с подобной проблемой. Мой способ решить эту проблему состоял в том, чтобы установить корневой исходный файл для модуля Intellij, чтобы он соответствовал исходной корневой папке проекта. Затем мне нужно было пометить некоторые папки как исключенные на панели навигации проекта (ту, которая не должна использоваться в новом проекте, для меня она была частично использована под Android). Это все.

У меня была аналогичная ошибка, и в моем случае исправление заключалось в удалении символа «-» из имени проекта. Вместо my-app, Я использовал MyApp

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

Имена пакетов не соответствуют структуре каталогов, это может вызвать проблемы с разрешением на классы из этого файла. Проверка файлов с оператором пакета, который не соответствует структуре пакета.

Файл находился в правильном месте, поэтому вспомогательные решения, предоставляемые IDE, бесполезны Переместить файл говорит, что файл уже существует (и это правда), и Rename Package фактически переместит его в неправильный пакет.

Проблема в том, что если у вас есть объекты Scala, вы должны убедиться, что первый объект в файле имеет то же имя, что и имя файла, поэтому решение состоит в том, чтобы переместить объекты внутри файла.

Это сложно здесь. В моем случае структура папок была такой:

ком / APPNAME /rateUS/ модели /FileName.java

Имя пакета, которое я указал в файле FileName.java:

package com.appName.rateUs.models;

Обратите внимание на небольшую разницу между именем пакета: оно должно быть rateUS вместо rateUs

Надеюсь, это поможет кому-то!

Другие вопросы по тегам