IntelliJ Inspektion gibt "Cannot resolve symbol" aber noch kompiliert den code

Plattform: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
OS: Windows 7

Also ich habe eine seltsame situation mit IntelliJ, hat mich völlig ratlos. Ich setup aus einem Maven-Projekt und fügen Sie log4j als Abhängigkeit in die pom.xml Datei. Die IDEE, die Prüfungen gut laufen und meine unit-tests alle kompilieren und ausführen.

Fügte ich hunnysoft ist jmime Bibliothek auf meinem lokalen maven-repository mit Hilfe der mvn install:install-Datei wie folgt.

mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar

Maven installiert die jar-Datei einfach in Ordnung in meinem lokalen repository.

Dann ging ich in IntelliJ Einstellungen => Maven => Repository-Dienste und Aktualisiert mein lokales repository (so, dass IntelliJ würde Neuindizierung der repository-Inhalte).

Schließlich, fügte ich folgende Abhängigkeit in meiner pom.xml Datei (nur über das log4j-dependency).

<dependency>
    <groupId>jmime</groupId>
    <artifactId>jmime</artifactId>
    <version>3.1.1e</version>
</dependency>

Ich jetzt eine neue Klasse erstellen, 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 für die Verrücktheit. IntelliJ ist die Absicht des Mechanismus nimmt und erkennt den Logger import in der maven-pom-Datei auch in Ordnung. Allerdings, für alle die hunnysoft-Importe meldet: "Cannot resolve symbol 'ByteString/Feld/FieldBody'", ABER Build => Compile 'StackOverflowQuestion.java' kompiliert alles einwandfrei und das Gerät testen, erstellte ich für diese Klasse gut läuft (obwohl die Absichten daneben der Aufruf von create() als problem-Bereich zu).

Also irgendwo, irgendwie IntelliJ ist die Nichtbeachtung der jmime.jar Datei für die Absicht subsystem. Ich bin verwirrt, weil Sie die log4j-dependency funktioniert einwandfrei und alles kompiliert und läuft einwandfrei. F12 ("Gehe Zu Deklaration") arbeitet auf dem Logger importieren, aber bricht auf allen jmime Einfuhren.

Oh, eine andere Sache, wenn ich gehen, um die 'Pakete' Ansicht in der "Projects" - Fenster den "com.hunnysoft.jmime" Paket angezeigt und ich kann sehen, dass ALLE Klassen, die ich importiert in das code-snippet oben unter "Bibliotheken". Das entfernen der oben genannten Abhängigkeit von der pom.xml Datei bewirkt, dass dieses Paket, um zu verschwinden und die Kompilierung bricht.

Scheint es, dass die Inspektion der classpath ist gebrochen, aber es tut nicht scheinen, um eine Einstellung für das überall in den Einstellungen => Absichten | Compiler-Bereiche (nicht, dass ich erwartet, dass solche Einstellungen, ich glaube, die IDEE sollte schon wissen, den richtigen classpath, basierend auf der pom-Datei und JDK).

Als eine endgültige experiment, das ich erstellt eine neue standard-J2SE-Anwendung-Projekt (ohne maven) und das Hinzugefügt jmime.jar Datei direkt dem Projekt als einer der Bibliotheken. Ich starte in genau die gleichen Probleme wie oben beschrieben in dieses neue Projekt.

Hier ist das MANIFEST.MF aus dem 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.

Sehe ich nichts ungewöhnliches in dieser jar-Datei.

Meine beste Vermutung ist, dass vielleicht das problem könnte eine fehlende Abhängigkeit Problem. Aber AFAIK jmime soll selbst enthalten (JarAnalyzer nicht mit etwas kommen, aber ich bin nicht sicher, es würde, wenn eine Abhängigkeit Glas fehlt).

Also, jemand irgendwelche Ideen?

Siehe auch stackoverflow.com/questions/15046764/..., wenn es sich nicht beheben Symbole, die Teil der maven-Abhängigkeiten [für mich war es eine fehlende M2_HOME]
2018.3.3. Immer noch der gleiche Fehler...

InformationsquelleAutor Kevin Sitze | 2011-05-06

Schreibe einen Kommentar