2014-10-18 2 views
33

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

The file structure

BTW. этот экран создается после многих попыток изменения свойств этих каталогов (в их контекстных меню).

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

The error in the editor

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

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

Error

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

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

ответ

33

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

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

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

или

  1. правой кнопкой мыши ЦСИ в Project Explorer
  2. Выберите New/пакет и создать пакет бадуги
  3. Выбор клиента и серверных пакетов и перетащить их в пакет badugi
+1

Что делать, если у меня есть, 50 классов и все должны быть перемещены в пакет? Есть ли способ, или мне просто нужно вручную Alt + Ввести их все? – parsecer

1

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

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

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

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

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

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

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

0

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

-2

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

Файл> Настройки> Редактор> Инспекции, затем найдите «Неверная инструкция пакета» (под Java, Вероятные ошибки) справа и снимите флажок.

+1

Это просто скрывает проблему. Это не решает. – Eden

19

У меня была такая же проблема, и установил ее, изменив .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> 

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> 

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

+1

Ницца :), это единственное, что сработало для меня. –

+1

Это должен быть принятый ответ. Вы не захотите менять файловую структуру приложения, которое работает на производстве (вероятно, вам придется переработать процесс сборки). Скорее, вы должны изменить свою среду IDE так, чтобы она правильно определяла ее. –

8

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

+0

Спасибо! После нескольких попыток я мог правильно настроить источники, не изменяя исходный код, и мой проект был исправлен. – Pangur

2

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

+0

Я добавил его в качестве исходного пакета, но он продолжает меняться, я не знаю почему. – Searene

+0

@Searene: Недействительный кэш и перезагрузка могут помочь вам –

2

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

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

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

+0

Отлично, это простое решение работает! – super1ha1

+0

Для моего случая я изменил с \t \t src на \t \t src/main/java super1ha1

0

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

Package names doesn't correspond to directories structure, this may cause problems with resolve to classes from this file Inspection for files with package statement which does not correspond to package structure.

Файл был в нужном месте, так что вспомогательные решения интегрированная среда разработки предоставляет не являются полезными enter image description here Переместить файл говорит файл уже существует (что верно) и переименовать пакет фактически переместить его в неправильной упаковке ,

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

 Смежные вопросы

  • Нет связанных вопросов^_^