Auf Thema antworten

Ich muss zur Zeit mit dem neuen Feature der Modularisierung in Eclipse arbeiten und soll vorhandenen Code "modularisieren" :/


Dieser ganze Modularisierungsprozess erwies sich derweil als ziemlich kompliziert und im Internet gibt es zu speziellen Problemen kaum Hilfe (speziell in Eclipse).

Bis jetzt habe ich mir die Grundlagen der Modularisierung schon aneignen können, jedoch besteht folgendes Problem:


Ich habe zwei Projekte: "module4711" und "module4712" welche jeweils ein gleichnamiges Modul enthalten.

In beiden Projekten gibt es das Package "com.itsg.deuv.kernpruefung" (genau das Gleiche) und in beiden Projekten gibt es in diesem Package eine Klasse "a"... also gleiches Package und doppelte Klasse "a".

Diese Klasse a hat jedoch in beiden Projekten eine unterscheidbare Methode getInfo()...die eine gibt ganz einfach "4711" aus und die andere "4712".

Die Module "exportieren" beide jeweils das Package!


Dann gibt es noch die Projekte "XYVersion4711" und "XYVersion4712".

Diese besitzen jeweils ein, dem Projektnamen entsprechendes, Package und in diesem Package gibt es die Klassen v4711 (XYVersion4711) und v4712 (XYVersion4712), welche beide eine Methode besitzen, welche a.getInfo() aufrufen, also die in den Modulen genannte Methode welche sich trotz gleichen Packages unterscheiden soll!

Damit die Klassen überhaut zugreifen dürfen, müssen ja auch diese Projekte ein Modul enthalten was die oberen Module "required".

Also habe ich die Module "module4711_2" und "module4712_2", welche logischerweise die oberen Module "requiren", erstellt.

Auch diese Module "exportieren" jeweils das Package im jeweiligen Projekt!

Über den Modulpfad ist Projekt "module4711_2" logischerweise mit "module4711" verknüpft, genauso bei "module4712_2" und "module4712", da die Module sonst nicht gefunden werden würden!


Zu guter Letzt gibt es noch das Projekt "Main Project", welches über ein Modul "mainProject" Zugriff auf die Module von XYVersion(...) erhält.

Auch hier wurde der Modulpfad verwendet.

In einer Main-Methode soll jetzt v4711.getInfo() und v4712.getInfo() ausgeführt werden, und das erwartete Ergebnis soll eigentlich einmal "4711" und einmal "4712", quasi dass über die vorhandenen Abhängigkeiten zwischen den gleichen Klassen "a" die verschiedenen Inhalte ausgeführt werden.

Leider wird ein Fehler ausgegeben:

[code]Error occurred during initialization of boot layer

java.lang.LayerInstantiationException: Package com.itsg.deuv.kernpruefung in both module module4712 and module module4711[/code]


In jeder Klasse wurden logischerweise auch die benötigten Importe gemacht und es gibt an sich keinen Fehler...


Wenn ich die gleichnamigen Packages unterscheidbar mache, sprich einen Namen änder dann funktioniert es gut.

Problem liegt also darin dass das Package zweimal verwendet wird...


Habt ihr eine Idee wie ich es schaffe bei gleichem Package und gleichnamiger Klasse mit verschiedenen Inhalten andere Ausgaben erziele?

Im Folgenden werde ich auch noch ein paar Bilder hochladen^^


Danke im Vorraus


PS: Habe Java 9 installiert, also Compiler = 9 usw.



Oben