Plattform: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
Betriebssystem: Windows 7
Ich habe also eine seltsame Situation mit IntelliJ, die mich völlig verblüfft hat. Ich richte ein Maven-Projekt ein und füge log4j als Abhängigkeit in die Datei pom.xml ein. Die IDEA-Inspektionen laufen einwandfrei und meine Unit-Tests werden alle kompiliert und ausgeführt.
Anschließend habe ich die jmime-Bibliothek von hunnysoft mit der folgenden Datei mvn install: install-file zu meinem lokalen Maven-Repository hinzugefügt.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Maven hat die JAR-Datei problemlos in meinem lokalen Repository installiert.
Ich ging dann zu IntelliJs Einstellungen => Maven => Repository-Dienste und aktualisierte mein lokales Repository (damit IntelliJ den Repository-Inhalt neu indiziert).
Schließlich habe ich meiner pom.xml-Datei die folgende Abhängigkeit hinzugefügt (direkt über der log4j-Abhängigkeit).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
Ich erstelle jetzt eine neue Klasse wie folgt:
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;
}
}
Nun zur Verrücktheit. Der Intentionsmechanismus von IntelliJ erkennt den Logger-Import in der Maven-Pom-Datei und erkennt ihn einwandfrei. Bei allen hunnysoft-Importen wird jedoch Folgendes gemeldet: "Das Symbol 'ByteString / Field / FieldBody' kann nicht aufgelöst werden", ABER Build => Compile 'StackOverflowQuestion.java' kompiliert alles korrekt und der für diese Klasse erstellte Komponententest läuft jedoch einwandfrei Die Absichten markieren den Aufruf von create () auch als Problembereich.
Irgendwie ignoriert IntelliJ die Datei jmime.jar für das Intentionssubsystem. Ich bin verwirrt, weil die log4j-Abhängigkeit gut funktioniert und alles gut kompiliert und ausgeführt wird. F12 ("Gehe zu Deklaration") funktioniert beim Logger-Import, bricht jedoch bei allen jmime-Importen ab.
Eine andere Sache: Wenn ich im Fenster "Projekte" zur Ansicht "Pakete" gehe, wird das Paket "com.hunnysoft.jmime" angezeigt und ich kann ALLE Klassen sehen, die ich im obigen Codeausschnitt unter "Bibliotheken" importiert habe. . Wenn Sie die obige Abhängigkeit aus der Datei pom.xml entfernen, verschwindet dieses Paket und die Kompilierung wird unterbrochen.
Es scheint, dass der Klassenpfad der Inspektion unterbrochen ist, aber es scheint nirgendwo in den Einstellungen => Absichten | eine Einstellung dafür zu geben Compiler-Bereiche (nicht, dass ich solche Einstellungen erwartet hätte, ich glaube, die IDEA sollte bereits den richtigen Klassenpfad basierend auf der POM-Datei und dem JDK kennen).
Als letztes Experiment habe ich ein brandneues Standard-J2SE-Anwendungsprojekt (ohne Verwendung von maven) erstellt und die Datei jmime.jar als eine ihrer Bibliotheken direkt zum Projekt hinzugefügt. Ich habe genau die gleichen Probleme wie oben in diesem neuen Projekt beschrieben.
Hier ist die MANIFEST.MF aus der jmime-JAR-Datei.
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.
Ich sehe nichts Ungewöhnliches in dieser JAR-Datei.
Ich vermute, dass das Problem möglicherweise ein fehlendes Abhängigkeitsproblem ist. Aber AFAIK jmime soll in sich geschlossen sein (JarAnalyzer hat nichts, aber ich bin mir nicht sicher, ob dies der Fall wäre, wenn ein Abhängigkeitsglas fehlt).
Hat jemand irgendwelche Ideen?