Проверка IntelliJ выдает «Невозможно разрешить символ», но все равно компилирует кодJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проверка IntelliJ выдает «Невозможно разрешить символ», но все равно компилирует код

Сообщение Anonymous »

Платформа: IntelliJ Community Edition 10.0.3

SDK: jdk1.6.0_21

ОС: Windows 7

Итак, у меня странная ситуация с IntelliJ, которая меня совершенно поставила в тупик. Я настраиваю проект Maven и добавляю log4j в качестве зависимости в файл pom.xml. Инспекции IDEA проходят нормально, и все мои модульные тесты компилируются и запускаются.

Затем я добавил библиотеку 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 => Службы репозитория и обновил свой локальный репозиторий (чтобы IntelliJ переиндексировал содержимое репозитория).

Наконец, я добавил следующую зависимость в свой файл pom.xml ( чуть выше зависимости log4j).

Код: Выделить всё

jmime
jmime
3.1.1e

Теперь я создаю новый класс следующим образом:

Код: Выделить всё

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 прекрасно улавливает и распознает импорт Logger в pom-файле maven. Однако для всех импортов hunnysoft он сообщает: «Невозможно разрешить символ «ByteString/Field/FieldBody»», НО Build => Компиляция «StackOverflowQuestion.java» компилирует все правильно, и созданный мной модульный тест поскольку этот класс работает нормально (хотя намерения отмечают вызов create() также как проблемную область).

Значит, где-то IntelliJ каким-то образом игнорирует файл jmime.jar для подсистемы намерения. Я в замешательстве, потому что зависимость log4j работает нормально, все компилируется и работает нормально. F12 («Перейти к декларации») работает при импорте Logger, но не работает при всем импорте jmime.

И еще кое-что, если я перейду в раздел «Пакеты» ' в окне «Проекты» появляется пакет «com.hunnysoft.jmime», и я вижу ВСЕ классы, которые я импортировал в приведенном выше фрагменте кода в разделе «Библиотеки». Удаление указанной выше зависимости из файла pom.xml приводит к исчезновению этого пакета и прерыванию компиляции.

Похоже, что путь к классам проверки нарушен, но, похоже, это не так. это можно настроить где угодно в Настройках => Намерения | Области компилятора (не то чтобы я ожидал таких настроек, я считаю, что IDEA уже должна знать правильный путь к классам на основе файла pom и JDK).

В качестве последнего эксперимента я создал новый стандартный проект приложения J2SE (без использования maven) и добавил файл jmime.jar непосредственно в проект в качестве одной из его библиотек. В этом новом проекте я столкнулся с точно такими же проблемами, как описано выше.

Вот MANIFEST.MF из jar-файла jmime.

Код: Выделить всё

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 ничего не выдает, но я не уверен, что так и будет, если jar-файл зависимостей отсутствует).

Итак, у кого-нибудь есть ИДЕИ?

Подробнее здесь: https://stackoverflow.com/questions/590 ... piles-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»