Search the FirstSpirit Knowledge Base
Hallo Community,
ich habe zwei Module, die die selbe Bibliothek (JAR-Datei) einbinden und benutzen.
Bei der Installation des ersten Moduls gibt es keine Probleme.
Sobald ich das zweite Modul mit der gleichen Bibliothek installieren will, kommt folgende Meldung:
ERROR 24.05.2011 17:27:08.314 (de.espirit.firstspirit.server.module.ModuleManagerImpl): module Menu-Editor: conflict detected, resource will be ignored (lib/openjpa-all-2.1.0.jar): de.espirit.firstspirit.server.module.ResourceConflictException: duplicate resource: lib/openjpa-all-2.1.0.jar
Gibt es evtl. dafür eine Lösung?
Danke schonmal
Markus
die Reihenfolge spielt keine Rolle, die Definition war nicht korrekt.
</service>
<resources>
muss aber so sein:
</service>
</components>
<resources>
wie sieht den der Modul-Descriptor aus? d.h. wie ist die Resource definiert?
...dieses Posting sollte weiter helfen. https://community.e-spirit.com/message/3985#3985
... hier der Auszug aus meiner module.xml
<library>
<resources>
<resource>lib/openjpa-all-2.1.0.jar</resource>
</resources>
</library>
Das Posting kann ich leider nicht aufrufen:
<resource scope="module">lib/openjpa-all-2.1.0.jar</resource> sollte funktionieren
---------
generell gilt:
"
"
soo nun hat die Bibliothek noch den Zusatz "scope" bekommen.
Es funktioniert!
Besten Dank dafür!
Nachtrag:
Leider schein es doch nicht zu funktionieren, da die benötigten Bibliotheken für einen Dienst (global) gebraucht werden.
Wenn nun der "scope" auf module gesetzt wird, findet der Service diese Bibhliotheken nicht mehr und startet nicht.
Das müsste dann aber ein Open-JPA Problem sein oder Service-Problem sein. Eventuell postest du mal die Fehlermeldung?
Evtl. hilf aus der Modul-Entwickler-Dokumentation Kapitel "2.5.1.1 Versionierung". Was spricht den dagegen, das openjpa-all-2.1.0.jar modul-lokal zu definieren, also auch fuer den Dienst.
Wenn der Dienst in einem anderem Modul liegt, welches die Bibliothek selber nicht definiert, ist der Fehler natürlich erwartungskonform.
Der Dienst der die Bibliothek benötigt liegt in dem Selben Modul, hier einen Auszug aus der module.xml
<library>
<resources>
<resource>lib/menu-editor-module.jar</resource>
<resource>lib/jtds-1.2.5.jar</resource>
<resource>lib/openjpa-all-2.1.0.jar</resource>
</resources>
</library>
<service>
<name>Menu-Editor Service</name>
<class>com.communicode.menueditor.firstspirit.service.impl.MenuEditorServiceImpl</class>
</service>
Wenn ich nun den scope auf module setze, dann wird beim starten des Dienstes die Bibliothek nicht gefunden
(ClassNotFoundException) da ein Dienst "global" ist
Der Punkt Versionierung hilft leider auch nicht, da auch ein Treiber benötigt wird.
Dieser müsste dann auch in einer anderen Version in jedem Modul benutzt werden.