Платформа: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
ОС: Windows 7
Таким образом, у меня странная ситуация с IntelliJ, которая полностью меня превзошла. Я настраиваю проект Maven и добавляю log4j в качестве зависимости в файле pom.xml. Инспекции IDEA работают нормально, и мои юниты проверяют все компиляцию и запуск.
Затем я добавил hunnysoft jmime-библиотеку в мой локальный репозиторий maven с помощью файла установки mvn install: install следующим образом.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Maven точно установил файл jar в мой локальный репозиторий.
Затем я перешел в IntelliJ Settings = > Maven = > Репозиторий и обновил локальный репозиторий (чтобы 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 mom. Однако для всего импорта hunnysoft он сообщает: "Не удается разрешить символ" ByteString/Field/FieldBody ", BUT Build = > Compile" StackOverflowQuestion.java "скомпилирует все правильно, а созданный для этого класса unit test работает отлично ( хотя намерения также указывают на вызов create() как проблемной области.)
Итак, где-то IntelliJ игнорирует файл jmime.jar для подсистемы намерения. Я запутался, потому что зависимость log4j работает нормально, и все компилируется и работает нормально. F12 ( "Перейти к декларации" ) работает с импортом Logger, но ломает все импорт jmime.
О, еще одна вещь, если я перейду к представлению "Пакеты" в окне "Проекты", появится пакет "com.hunnysoft.jmime", и я могу увидеть ВСЕ классы, которые я импортировал в фрагменте кода выше "Библиотека". Удаление вышеуказанной зависимости из файла pom.xml заставляет этот пакет исчезать и компиляция прерывается.
Похоже, что путь класса проверки нарушен, но, похоже, для этого параметра настройки в настройках = > Намерения | Области компилятора (не то, что я ожидал каких-либо таких настроек, я считаю, что IDEA уже должен знать правильный путь к классам, основанный на файле pom и JDK).
В качестве заключительного эксперимента я создал совершенно новый стандартный прикладной проект J2SE (без использования maven) и добавил файл jmime.jar непосредственно в проект как одну из его библиотек. Я столкнулся с такими же проблемами, как описано выше в этом новом проекте.
Вот файл MANIFEST.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 ничего не придумает, но я не уверен, что это произойдет, если отсутствует байт зависимости).
Итак, у кого-нибудь есть IDEA?