Платформа: 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).
<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 підбирає та добре розпізнає імпорт Logger у файл Maven pom. Однак для всіх імпортованих файлів hunnysoft він повідомляє: "Не вдається вирішити символ" ByteString / Field / FieldBody "", BUT Build => Compile 'StackOverflowQuestion.java' збирає все правильно, і тестовий блок, створений для цього класу, працює нормально (хоча наміри позначають заклик до створення () також як проблемної області.
Тож десь якось IntelliJ ігнорує файл jmime.jar для підсистеми намірів. Я розгублений, тому що залежність log4j працює добре, і все компілюється та працює нормально. F12 ("Перейти до декларації") працює на імпорті Logger, але переривається на весь імпорт jmime.
О, ще одна річ, якщо я перейду до перегляду «Пакети» у вікні «Проекти», з’явиться пакет «com.hunnysoft.jmime», і я можу побачити ВСІ класи, які я імпортував у фрагменті коду вище, під «Бібліотеки» . Видалення вищезазначеної залежності з файлу pom.xml призводить до зникнення цього пакету та компіляції.
Здається, що класифікаційний шлях інспекції порушений, але, схоже, немає налаштувань для цього в будь-якому місці в Налаштуваннях => Намір | Області компілятора (не те, що я очікував таких налаштувань, я вважаю, що IDEA вже повинна знати правильний клас курсу на основі файлу pom та JDK).
Як остаточний експеримент, я створив абсолютно новий стандартний проект програми J2SE (без використання maven) і додав файл jmime.jar безпосередньо до проекту як одну з його бібліотек. У мене виникають абсолютно ті самі проблеми, що описані вище в цьому новому проекті.
Ось MANIFEST.MF з файлу jar 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.
Я найкраще здогадуюсь, що, можливо, проблема може бути проблемою, що відсутня. Але jmaime AFAIK повинен бути самостійним (JarAnalyzer нічого не придумає, але я не впевнений, що це буде, якщо бляк залежностей відсутній).
Отже, у кого є якісь ІДЕА?