Plataforma: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
SO: Windows 7
Así que tengo una situación extraña con IntelliJ que me tiene completamente perplejo. Configuré un proyecto Maven y agregué log4j como una dependencia en el archivo pom.xml. Las inspecciones de IDEA funcionan bien y mi unidad prueba todas las compilaciones y ejecuciones.
Luego agregué la biblioteca jmime de hunnysoft a mi repositorio local de maven usando mvn install: install-file de la siguiente manera.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Maven instaló el archivo jar muy bien en mi repositorio local.
Luego entré en Configuración de IntelliJ => Maven => Servicios de repositorio y actualicé mi repositorio local (para que IntelliJ reindexara el contenido del repositorio).
Finalmente, agregué la siguiente dependencia a mi archivo pom.xml (justo arriba de la dependencia log4j).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
Ahora creo una nueva clase de la siguiente manera:
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;
}
}
Ahora por la rareza. El mecanismo de intención de IntelliJ recoge y reconoce la importación de Logger en el archivo pom maven muy bien. Sin embargo, para todas las importaciones de hunnysoft, informa: "No se puede resolver el símbolo 'ByteString / Field / FieldBody'", PERO Build => Compile 'StackOverflowQuestion.java' compila todo correctamente y la prueba de unidad que creé para esta clase funciona bien (aunque las intenciones marcan la llamada a create () como un área problemática también).
Entonces, en alguna parte, IntelliJ ignora el archivo jmime.jar para el subsistema de intención. Estoy confundido porque la dependencia log4j funciona bien y todo se compila y funciona bien. F12 ("Ir a la declaración") funciona en la importación del registrador, pero se interrumpe en todas las importaciones de jmime.
Ah, otra cosa, si voy a la vista 'Paquetes' en la ventana "Proyectos" aparece el paquete "com.hunnysoft.jmime" y puedo ver TODAS las clases que importé en el fragmento de código de arriba en "Bibliotecas" . Al eliminar la dependencia anterior del archivo pom.xml, este paquete desaparece y la compilación se rompe.
Parece que la ruta de clase de la inspección está rota, pero no parece haber una configuración para esto en ninguna parte de Configuración => Intenciones | Áreas del compilador (no es que esperara ninguna configuración de este tipo, creo que IDEA ya debería conocer la ruta de clase correcta basada en el archivo pom y JDK).
Como experimento final, creé un nuevo proyecto de aplicación estándar J2SE (sin usar maven) y agregué el archivo jmime.jar directamente al proyecto como una de sus bibliotecas. Me encuentro exactamente con los mismos problemas descritos anteriormente en este nuevo proyecto.
Aquí está el MANIFEST.MF del archivo 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.
No veo nada inusual en este archivo jar.
Mi mejor conjetura es que quizás el problema podría ser un problema de dependencia que falta. Pero se supone que AFAIK jmime es autónomo (JarAnalyzer no presenta nada, pero no estoy seguro de que lo haría si falta un jar de dependencia).
Entonces, ¿alguien tiene alguna IDEA?