Maven-Kompilierung schlägt fehl, während die eclipse erfolgreich ist
Ich bin mit maven3.03 und Eclipse 3.5 auf Windows XP. Ich konvertiert alte web-Projekt in maven-Konfiguration.
Wenn ich kompilieren Sie das Projekt in eclipse alles kompilieren.
Hinweis: Der Klassenpfad enthält: Maven-Abhängigkeiten und JDK(1.6_018).
Beim kompilieren von der Kommandozeile aus mit mvn, bekomme ich einige Fehler:
1.package com.Sonne.xml.intern.stream.Puffer.stax ist nicht vorhanden.
2.package com.Sonne.xml.intern.stream.Schriftsteller nicht vorhanden
3.kann nicht finden, symbol, symbol : class XMLDOMWriterImpl
4.package com.Sonne.xml.intern.messaging.saaj.util nicht vorhanden
5.package com.Sonne.xml.intern.binden.v2.- Laufzeit.unmarshaller nicht vorhanden
6.kann nicht finden, symbol, symbol : class NamespaceContexHelper
7.kann nicht finden das symbol symbol : class ByteOutputStream
Kann ich sehen, dass dies etwas mit sun jar. Aber ich kann einfach nicht verstehen, warum eclipse ist ok und die Kommandozeile nicht.
BEARBEITEN: Einer der Fehler, die ich nicht erwähnt habe in die oben genannte Liste ist:
[ERROR]<path>\EventsViewer.java:[54,69] inconvertible types found: <br>java.util.SortedMap<java.util.Date,java.util.List<com.myClass>>
required: java.util.Map<? extends java.util.Date,? extends java.util.List<com.myOtherClass>>
Wenn ich sehe, in der gleichen Zeile in eclipse bekomme ich die Warnung:
Type safety: Unchecked cast from SortedMap<Date,List<myClass>> to Map<? extends Date,? extends
List<myOtherClass>>
In Eclipse habe ich eine Warnung erhalten und in maven-ich bekomme Fehler. Ich habe mir die org.eclipse.jdt.core.prefs und sehen die Einstellung ist org.eclipse.jdt.core.compiler.problem.forbiddenReference=Warnung.
Update:
Ich habe gelesen, einige der oben genannten Fehler. Das "problem" ist, dass in eclipse erscheint es als nicht verwendete importieren. Stangly maven-Bericht dies als Fehler. Nach dem entfernen ungenutzter import war der Fehler Weg. Aber immer noch problem 3 und 7 erfolgt
Abschluss: ich denke, dass die Warnungen werden Fehler in der javac. da benutze ich nicht supressWarnings. Ich bin nur überrascht, dass der Fehler anders ist.
Was ist es?
- höchstwahrscheinlich Ihre
JAVA_HOME
ist nicht' in der Maven-Umgebung. - Welche Plattformen Sie laufen Maven und Eclipse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist der wahre Grund vielleicht
aus dem maven-forum die Antwort
" Jerome ist richtig, dass es nicht empfohlen, die Verwendung von com.Sonne
Klassen aus rt.jar. Und vor allem diejenigen, die mit "internal"; Sie sind nur
nach ärger.
Aber ich war neugierig über diese, so hat es ausprobiert. Die obige Klasse kann
in der Tat aufgerufen werden, indem Sie Eclipse. Allerdings kompilieren des Codes auf die
commandline mit javac schlägt fehl mit "nicht vorhanden" - Fehler. Also mein
Annahme ist, dass die Sonne java-compiler erkennt, wenn eine spezielle
"interne" Klasse, auf die zugegriffen wird, und weigert sich, importieren Sie die Klasse.
Eclipse verwendet einen anderen compiler, die vermutlich nicht haben, dies zu überprüfen.
Maven benutzt nur die javac-compiler im system vorhanden Ausführung
Pfad. Daher ist das problem nichts zu tun mit Maven an alle. Es ist die
compiler, maven aufruft, die sich weigern den Quellcode kompilieren.
Ich kann nicht sehen, keine öffentliche Flaggen in der javac-Kommandozeile zum deaktivieren dieser
"Sperrung" der interne Zugang, also, wenn Sie vermeiden wollen, mit Sonne
javac-compiler Sie müssen nur vermeiden, mit dieser inneren Klasse.
Nur zum Spaß, ich habe versucht, aus Jerome ' s Vorschlag setzen rt.jar auf der
classpath:
javac -cp /usr/java/jdk1.6.0_03/jre/lib/rt.jar Foo.java
aber immer noch nicht kompilieren.
Den ByteOutputStream Klasse kann geladen werden zur Laufzeit über
Klasse.forName("..").
Interessant, ein Projekt an dem ich arbeite, kommt zum importieren der Klasse
com.Sonne.org.apache.xml.intern.utils.SAXSourceLocator;
und das funktioniert ok. Warnungen werden ausgegeben, aber der code kompiliert (und ja,
es ist auf meiner TODO-Liste dieses Problem zu beheben :-). Es ist also nicht alle interne Klassen
die werden gesperrt, nur ausgewählte. "
Überprüfen Sie werden mit der gleichen JDK für beide die Eclipse und Maven-builds. Auch wenn Sie denken, Sie sind, überprüfen Sie eh wieder.
Diese Pakete sind nur einige von denen, die in einigen Versionen von Java und andere nicht.
Wenn die java-version unterscheidet sich, indem die
maven-compiler-plugin
Konfiguration der Quell-und Ziel-Richtung und 1.6
Aktualisierung der Projekt-Konfiguration von Maven-Projekt Kontext-Menü lösen, wird die out-of-sync-problem in vielen Fällen (das führt zu unterschiedlichen Zusammenstellung der Ergebnisse):
Dies ist mein Fall: ich habe den gleichen Fehler in IntelliJ nach dem hinzufügen
//TODO
, Intellij Automatisch Hinzugefügt, diese Zeile im import-Abschnittimport com.sun.xml.internal.bind.v2.TODO;
Nach dem entfernen der oben genannten Zeile importieren, wird das problem gelöst. Jetzt kann ich kompilieren konnte erfolgreich mit maven