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 ratlos macht. Ich richte ein Maven-Projekt ein und füge log4j als eine Abhängigkeit in der pom.xml-Datei hinzu. Die IDEA-Inspektionen laufen gut und meine Unit-Tests werden alle kompiliert und ausgeführt.
Ich habe dann die jmime-Bibliothek von hunnysoft zu meinem lokalen Maven-Repository hinzugefügt, indem ich die mvn install:install-Datei wie folgt verwendet habe.
mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar
Maven hat die jar-Datei problemlos in mein lokales Repository installiert.
Dann ging ich in IntelliJs Einstellungen => Maven => Repository Services und aktualisierte mein lokales Repository (so dass IntelliJ den Inhalt des Repositorys neu indizieren würde).
Schließlich habe ich die folgende Abhängigkeit zu meiner pom.xml-Datei hinzugefügt (direkt über der log4j-Abhängigkeit).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
Ich erstelle nun 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;
}
}
Und jetzt das Seltsame. IntelliJ's Intent-Mechanismus erkennt den Logger-Import in der Maven Pom-Datei einwandfrei. Jedoch für alle hunnysoft Importe meldet es: "Das Symbol 'ByteString/Field/FieldBody' kann nicht aufgelöst werden", BUT Build => Compile 'StackOverflowQuestion.java' kompiliert alles korrekt und der Unit-Test, den ich für diese Klasse erstellt habe, läuft einwandfrei (obwohl die Absichten den Aufruf von create() ebenfalls als Problembereich markieren).
Irgendwo, irgendwie ignoriert IntelliJ also die Datei jmime.jar für das Intention-Subsystem. Ich bin verwirrt, weil die log4j-Abhängigkeit funktioniert gut und alles kompiliert und läuft gut. F12 ("Go To Declaration") funktioniert beim Logger-Import, bricht aber bei allen jmime-Importen ab.
Ach ja, noch etwas: Wenn ich im Fenster "Projekte" die Ansicht "Pakete" aufrufe, erscheint das Paket "com.hunnysoft.jmime" und ich kann ALLE Klassen sehen, die ich im obigen Codeschnipsel unter "Bibliotheken" importiert habe. Wenn ich die oben genannte Abhängigkeit aus der pom.xml-Datei entferne, verschwindet dieses Paket und die Kompilierung wird abgebrochen.
Es scheint, dass der Klassenpfad der Inspektion kaputt ist, aber es scheint nirgendwo in den Bereichen Einstellungen => Intentions | Compiler eine Einstellung dafür zu geben (nicht, dass ich solche Einstellungen erwartet hätte, ich glaube, IDEA sollte den korrekten Klassenpfad auf der Grundlage der pom-Datei und des JDK bereits kennen).
Als letztes Experiment habe ich ein brandneues Standard-J2SE-Anwendungsprojekt erstellt (ohne Maven zu verwenden) und die Datei jmime.jar direkt als eine der Bibliotheken in das Projekt eingefügt. In diesem neuen Projekt stieß ich auf genau die gleichen Probleme wie oben 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.
Meine beste Vermutung ist, dass das Problem vielleicht ein Problem mit fehlenden Abhängigkeiten ist. Aber AFAIK jmime soll selbst enthalten sein (JarAnalyzer kommt nicht mit etwas, aber ich bin nicht sicher, es würde, wenn eine Abhängigkeit jar fehlt).
Hat jemand eine IDEE?
1 Stimmen
Siehe auch stackoverflow.com/questions/15046764/ wenn es Symbole nicht auflösen kann, die Teil der Maven-Abhängigkeiten sind [bei mir war es ein fehlendes M2_HOME]
1 Stimmen
2018.3.3. Immer noch der gleiche Fehler...
2 Stimmen
File>Invalidate Caches/Restart hat bei mir in Version 2020.03 funktioniert.
0 Stimmen
Dies war [meist] vervielfältigt (obwohl duplicate inzwischen eine Menge ähnlich guter Antworten hat) - mit dem kleinen Unterschied zu hier, dass die Angabe von prior-successful
mvn clean install