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
Затем я зашел в настройки 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 каким-то образом игнорирует файл 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.
Я думаю, что, возможно, проблема может быть проблема с отсутствующей зависимостью. Но AFAIK jmime должен быть автономным (JarAnalyzer ничего не выдает, но я не уверен, что так и будет, если jar-файл зависимостей отсутствует).
Итак, у кого-нибудь есть ИДЕИ?
Подробнее здесь: https://stackoverflow.com/questions/590 ... piles-code
Мобильная версия