Проверка IntelliJ дает "не может разрешить символ" , но все же компилирует код
Платформа: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
ОС: Windows 7
Итак, у меня странная ситуация с IntelliJ, которая меня полностью в тупик. Я настраиваю проект Maven и добавляю log4j в качестве зависимости в pom.XML-файл. Проверки идей работают нормально, и все мои модульные тесты компилируются и запускаются.
затем я добавил библиотеку jmime hunnysoft в мой локальный репозиторий maven, используя mvn install:install-file как следует.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Maven установил файл jar просто отлично в мой локальный репозиторий.
затем я вошел в Настройки IntelliJ => Maven => Repository Services и обновил свой локальный репозиторий (чтобы IntelliJ переиндексировал содержимое репозитория).
наконец, я добавил следующую зависимость к моему pom.xml-файл (чуть выше зависимости log4j).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
теперь я создаю новый класс следующим образом:
package com.stackoverflow.question;
import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;
public class StackOverflowQuestion {
public Field create(String name, String text) {
Logger.getLogger(getClass()).debug("create entered");
FieldBody body = new FieldBody();
body.setText(new ByteString(text));
Field field = new Field();
field.setFieldName(name);
field.setFieldBody(body);
return field;
}
}
теперь странность. Механизм намерения IntelliJ подбирает и распознает импорт регистратора в файле Maven pom просто отлично. Однако для всех импорта hunnysoft он сообщает: "не удается разрешить символ" ByteString / Field/FieldBody"",но Build => Compile ' StackOverflowQuestion.java " компилирует все правильно, и модульный тест, который я создал для этого класса, работает нормально (хотя намерения отмечают вызов create() как проблемную область).
так где-то, как-то IntelliJ игнорирует jmime.файл jar для подсистемы intention. Я смущен, потому что зависимость log4j работает нормально, и все компилируется и работает нормально. F12 ("перейти к объявлению") работает на импорте регистратора, но разрывается на всех импортах jmime.
о, еще одна вещь, если я перейду к представлению "пакеты" в окне "проекты "" com.ханнисофт.появляется пакет "jmime", и я вижу все классы, которые я импортировал в фрагменте кода выше в разделе"библиотеки". Удаление выше зависимость от пом.xml-файл приводит к исчезновению этого пакета и разрывам компиляции.
похоже, что путь к классам проверки нарушен, но, похоже, для этого нет настройки в любом месте в областях настроек => намерения | компилятора (не то, чтобы я ожидал каких-либо таких настроек, я считаю, что идея уже должна знать правильный путь к классам на основе файла pom и JDK).
в качестве заключительного эксперимента я создал новый стандартный проект приложения J2SE (без использования maven) и добавил jmime.jar-файл непосредственно в проект в качестве одной из его библиотек. Я сталкиваюсь с точно такими же проблемами, как описано выше в этом новом проекте.
вот манифест.MF из файла jmime jar.
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4
Created-By: 10.0-b23 (Sun Microsystems Inc.)
Name: com/hunnysoft/jmime/
Sealed: true
Specification-Title: Hunny JMIME
Specification-Version: 3.1.1
Specification-Vendor: Hunny Software, Inc.
Implementation-Title: com.hunnysoft.jmime
Implementation-Version: 3.1.1E
Implementation-Vendor: Hunny Software, Inc.
Я не вижу ничего необычного в этом файле jar.
предполагаю, что возможно проблема может быть отсутствует проблема зависимостей. Но AFAIK jmime должен быть автономным (JarAnalyzer не придумывает что угодно, но я не уверен, что это будет, если отсутствует банка зависимостей).
Итак, у кого-нибудь есть идеи?
30 ответов
прежде всего, вы должны попробовать File | Invalidate Caches
и если это не поможет, удалить IDEA system directory. Затем повторно импортируйте проект Maven и посмотрите, поможет ли это.
в некоторых странных случаях скомпилированные классы могут сообщать неправильную информацию и путать идею. Убедитесь, что классы из этого отчета jar исправляют имена с помощью javap.
следующий трюк решил эту проблему для меня:
- Правой Кнопкой Мыши на редакторе кода
- наведите курсор на Maven и разверните
- нажмите на реимпорт
моя версия идеи-12.0.4
для пользователей Gradle в:
возможно, Вам потребуется синхронизировать проект с вашим .
вы можете щелкнуть правой кнопкой мыши на вашем файле gradle под панелью проекта, чтобы сделать это,но Это, похоже, ничего не сделало для меня (я подозреваю ошибку в своей версии). Вы будете знать, если это произойдет, потому что это не " начать любые задачи IntelliJ, которые вы будете ждать. Вместо откройте Панель инструментов Gradle, затем нажмите кнопку кнопку Синхронизировать (обновлять). Это сработало для меня, где недействительность кэша и перезапуск не сделали.
мое собственное обстоятельство: я использовал проект Scala с Gradle и должен был это сделать.
один дополнительный шаг, когда я сделал File - > Invalidate кэши и перезапустил IDE, откройте проект. Он выскочил тостбокс в правом верхнем углу, спрашивая меня, следует ли включить автоматический импорт, и это решило проблему.
ни одно из вышеперечисленных решений не сработало для меня. Зачем было извлекать главное.iml файл вручную, и он внезапно сработал.
еще одна вещь для проверки: убедитесь, что зависимости не дублируются. В моем случае я обнаружил, что модуль, демонстрирующий это поведение, был неправильно сконфигурирован следующим образом: он имел зависимость от другого модуля, и у него была зависимость от jar, произведенного этим другим модулем. Это означало для каждого символа, на который ссылались в двух экземплярах, и было неоднозначным.
Это было упомянуто выше, но только это исправляет это для меня. Я делаю все свои сборки в терминале seaprate, за пределами IntelliJ. Таким образом, кэш должен иметь соответствующие разрешения, установленные для приложения IntelliJ для их чтения.
запустить из корневой папки проекта.
$ mvn -U idea:idea
было ли опубликовано исправление? Появляется проблема, первоначально затронувшая v11 / 12 из-за "капитального ремонта компилятора" еще в 2013 году. С обсуждением смежных вопросов в Jira до конца 2014 года. http://youtrack.jetbrains.com/issue/IDEA-98425
также на Jira идея-98425 ознаменовался основные но непроверенных (в версии 12.0.3). Ни одно из следующих обойти помог решить эту "не чтобы разрешить символ" проблема с версии 13.1.1 на Windows
a. Удалить .IdealIC13 папка (затем File \ Invalidate Caches / Restart)
b. От Maven-Проекты,
б.1 mvn-U идея: идея –〉выполнение этой цели maven предполагает перезагрузку зависимостей. Это работает prev, но с прошлого ПТ, выполнение этой цели maven не удалось, поскольку она пыталась перекомпилировать проект (конечно, это не удается как "невозможно разрешить символы", это то, что я пытаюсь исправить, запустив эту команду в первую очередь) mvn-version - показывает версию maven, на которую ссылается 3.2.5, и что она работает
b.2 просто щелкните правой кнопкой мыши проект и реимпорт
б.3 \ файл Аннулировать Кэш / Перезапуск
c. Пробовал как включить , так и отключить этот параметр: Файл - > Настройки - > Maven - > импорт - > " использовать maven3 для импорта проект"
d. Settings \ Maven \ Multiproject build fail policy = сбой в конце (вместо По умолчанию)
ничего не работает. Что происходит с поддержкой IntelliJ на Maven.
https://youtrack.jetbrains.com/issue/IDEA-99302
из истории выпуска JetBeans,https://www.jetbrains.com/company/history.jsp
IntelliJ v14 ноября 2014 года
IntelliJ v13 DEC
Я решил В12 (хотя непроверенных) будут включены в последующие выпуски. У кого-нибудь есть похожие проблемы с какой версией IntelliJ? Пожалуйста, поделитесь своим опытом. Поддержка IntelliJ maven кажется сломанной.
несогласованные / повторяющиеся имена модулей в структуре проекта вызывали эту проблему для меня.
- на
File -> Project Strucutre -> Modules
- в нажмите на модули, которые имеют красное подчеркивание
- попал на вкладку "зависимости"
- убедитесь, что в списке зависимостей действительно существуют красные зависимости. Если нет, переименуйте их в соответствии с существующими именами зависимостей
Это может произойти, когда IntelliJ не выключается должным образом и, следовательно, не может правильно сохранить переименованные имена модулей.
у меня просто была эта проблема, и она просто не уходила. В конце концов я уничтожил каталог конфигурации IntelliJ в ~
и перестроил мой проект IntelliJ с нуля. (В конце концов, это заняло всего около 15 минут, по сравнению с часом, когда вы пытались решить проблемы с кэшированными файлами и т. д.)
обратите внимание, что я предполагаю, что первоначальная проблема была вызвана чем-то вроде javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html
(NB: с 2018 года эта ссылка мертва, но archive.org имеет копия страницы от когда этот ответ был написан -Эд.) или проблема с дисковым пространством / памятью, вызывающая сбой Java. IntelliJ казалось просто испорчены.
для другой альтернативы.
Я получил эту проблему также, когда я использовал JDK7_07. Я попробовал все ответы здесь (кроме удаления системного каталога IDEA). Но у меня все еще есть проблема. Вот что я сделал:--1-->
установите новейший JDK (это был JDK7_45) и установите JDK Intellij в новый, и он работает.
после аннулирования моего кэша и перезапуска; и подтверждение моих настроек maven были в порядке, я все еще видел "не могу разрешить символ" для модуля, который я определенно установил в качестве зависимости. Оказалось, что я настроил его не на ту волну.
вы можете проверить, щелкнув правой кнопкой мыши по модулю и выбрав открыть Настройки модуля. Перейдите на вкладку зависимость и убедитесь, что область для неразрешимой зависимости настроена на компиляцию.
повторный импорт проекта сработал для меня. Щелкните правой кнопкой мыши на Project- > Maven - >Reimport
когда я сделал File - > Invalidate кэши и перезапустил IDE, откройте проект. Он показал диалог в правом верхнем углу "обнаружены изменения Maven" и дал возможность импортировать и включить автоматический импорт. Даже после импорта проекта здесь у меня была такая же проблема. Вышеуказанный шаг решил проблему.
иногда я просто открываю структуру проекта и нажимаю project, затем выберите версию SDK.
да, похоже, вам нужно создать библиотеки, содержащие необходимые банки, и добавить их в качестве зависимости в свой модуль.
для пользователей Intellij Idea эти команды перед импортом проекта могут помочь:
./ gradlew build ./идеи gradlew
Моя Структура Проекта:
src -> main -> scala -> mypackages
что получилось:
щелкните правой кнопкой мыши scala
папка и нажмите "отметить каталог как корневой источник".
в моем случае удаляется только buildDir.
В этом случае File | Invalidate Caches
не работает.
когда я делаю Build | Make Project
до File | Invalidate Caches
все работает нормально.
- Открыть "Параметры"
- Поиск "Maven"
- нажмите "игнорируемые файлы" в разделе "Maven"
- снимите флажок pom.xml-файлы содержат отсутствующие зависимости
- нажмите "OK"
- Нажмите File - > Invalidate Caches / Restart...
- нажмите "аннулировать и перезапустить"
ни одно из вышеперечисленных решений не решило его для меня. У меня была та же проблема, когда код скомпилирован отлично, но IntelliJ показал, что он не может найти импорт. Хотя IntelliJ предложил импортировать в первую очередь из завершения кода.
моим решением было переместить все в пакет по умолчанию, удалить com.foo.bar
пакет, затем создайте его снова и переместите все обратно.
предложенные решения не работают. Мне пришлось unignore несколько проектов, щелкнув правой кнопкой мыши по проекту pom => maven => unignore.
после
mvn clean install -T 6 -DskipTests
в консоли IntelliJ снова был счастлив. Понятия не имею, как проекты стали игнорировать...
удалите файл: iml, найденный в папках java и test внутри проекта, и аннулировать и перезапустить .
Он спросит, могу ли я удалить проекты . Поставьте Да. Ошибка будет отключена.
иногда, когда вы создаете пакет, такой как com.мойдомен.что-то структура каталогов не создается и слева в одной папке имени "com.мойдомен.что-то" в этом случае вы должны создать структуру каталогов, как
com
|_mydomain
|_something
в моем случае, я пытаюсь открыть проект spring boot из IntellijIdea получил ту же проблему, как не удалось импортировать все файлы spring.
затем я сделал:
File - > Close Project - > Import Project - > Import from external model - > выберите Gradle - > Next - > выберите проект из расположения файла - > Finish
теперь все работает нормально, как и ожидалось.
Я видел много ответов здесь, но я, наконец, нашел это решение. Он может пригодиться кому-то вроде меня.
ни один из других ответов не работал на меня. Мой импорт не был разрешен, потому что IntelliJ указал на ошибку .файл м2.
Версия IntelliJ:IntelliJ Idea 2018.1.5
мое местоположение .м2 каталог был указан неправильный путь. Все, что я сделал, чтобы исправить это, было перенаправить IntelliJ вправо .каталог m2 и обновите его.
в: Файл - >Настройки - >Сборка, Выполнение, Развертывание - >Сборка Инструменты - >Maven
Мне пришлось изменить настройки пользователя: и локальный репозиторий: к правильному местоположению моего .каталог м2.
после этого перейти к: Файл - >Настройки - >Сборка, Выполнение, Развертывание->Инструменты Сборки->Maven->Репозитории
и нажмите кнопку Обновить.
Если ваш проект maven является многомодульным проектом, проверьте, игнорируются ли некоторые модули intellij.
- нажмите вид - > окна инструментов - > проекты Maven и проверьте, игнорируются ли некоторые модули(игнорируемые модули находятся в сером цвете, например
gs-multi-module
на следующем рисунке).
- щелкните правой кнопкой мыши на игнорируемом модуле и выберите
Unignore Projects
.
затем дождитесь завершения индексирования intellij, после чего он будет работать.
Если проект maven, то просто перейдите в настройки - >инструменты сборки - >maven - >импорт. установите флажок "импортировать проект maven автоматически". решит проблему.
недействительным кэши работал для меня, но после запуска приложения была такая же ошибка.
поэтому я попытался (Intellij):
1-строка меню-рефакторинг/построить | Выполнения | Инструменты - нажмите построить затем Перестроить Проект
2 - MVN чистый
3-щелкните правой кнопкой мыши на project > Maven > Generate Sources and Update Folder
надеюсь, это сработает для вас.
спасибо
или, возможно, импортируемый файл слишком велик.это мой случай, когда я меняю свойство Intellij: iead.максимум.интеллисен.размер файла (путь ${idea dir}/bin / idea.свойства) для большего значения, например 25000, и перезапустить IDE, проблема исчезла. Надеюсь, это поможет.
в моем случае эта проблема появилась после того, как я проверил большую реструктуризацию файлов в моем проекте maven. На момент выезда у меня были некоторые из моих собственных непроверенных изменений, все еще активных. Насколько я мог судить, изменений не было ни в одном из реструктурируемых файлов.
аннулирование кэша и перезапуск не сработали для меня. Что сработало:
- возврат изменений, которые я сделал до большой проверки реструктуризации
- импортировать все модули maven