Warum würde compiler Fehler auf doppelte Klasse, wenn Sie gehören zu verschiedenen Pakete?
Habe ich diese geerbt Projekt mit Maven/m2e wie das build-Automatisierungs-tool. Alles schön & cool, außer, dass dieses Projekt ausgecheckt aus dem SVN, da ist, ist kaputt... bedeutet, dass es nicht zu bauen, mit mehreren duplicate class Fehler:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.1:compile (default-compile) on project myproj: Compilation failure: Compilation failure:
[ERROR] \Users\Daniel\workspace\myproj\target\generated-sources\cxf\org\package1\services\ClassA.java:[36,7] duplicate class: org.package1.services.ClassA
Nun, es ist wahr, dass ClassA
besteht in der build-Umgebung 3 mal:
c:/Users/Daniel/workspace/myproj/src/main/java/org/package1/services/ClassA.java
c:/Users/Daniel/workspace/myproj/src/main/java/org/package1/www/services/ClassA.java
c:/Users/Daniel/workspace/myproj/target/generated-sources/cxf/org/package1/services/ClassA.java
Aber Sie gehören zu verschiedenen Paketen:
- - Paket org.package1.Dienstleistungen;
- - Paket org.package1.www.Dienstleistungen;
So, warum würde sich der compiler beschweren sich über ein Duplikat der Klasse?
(Oder ist es, dass Maven beschwert sich?)
Ich bin nicht vertraut mit dem design-überlegungen die original-Autorin, so eine Idee, wie man um diese Duplikate wäre sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast drei Klassen, in zwei Pakete. Deshalb werden zwei Klassen sind im gleichen Paket. Diese zwei Dateien:
... sind beide Beitrag
org.package1.services.ClassA
(das ist der voll-qualifizierte Klassen-name der compiler beschwert sich darüber, Hinweis). Es ist nicht klar, welche Sie sollte verwenden, basierend auf den Informationen, die Sie gegeben haben.Die Tatsache, dass die Klasse hat das gleiche einfach Namen in verschiedenen Paketen spielt keine Rolle; eine Klasse wird als mit Ihrem vollständigen Namen, die enthält auch den Paketnamen. In Java kann man eigentlich zwei Klassen, die von den gleichen voll Namen in der gleichen JVM wie lange, wie Sie geladen werden, indem zwei unterschiedliche class loader (das ist nicht Ihr Fall).
Nun hast du zwei Klassen, die den gleichen Namen haben
org.package1.services.ClassA
einer von Ihnen geschrieben und man erzeugt, wenn man Sie braucht beide, und Sie wollen Sie nicht umbenannt, Sie müssen verwenden Sie einen anderen classloader für eine von Ihnen (eine Art von kompliziert, so dass es einfach werden würde, wenn Sie umbenannt, der die generierte Klasse).Ist es nicht
ClassA
was doppelt vorhanden ist, aberorg.package1.services.ClassA
die dupliziert wird.Müssen Sie ändern, dass die
package eorg.package1.services;
erscheint nicht am start von den anderen Dateien.