markus
I'm new here

ResourceConflictException bei der Modulinstallation

Jump to solution

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

1 Solution

Accepted Solutions

die Reihenfolge spielt keine Rolle, die Definition war nicht korrekt.

</service>

<resources>

muss aber so sein:

</service>

</components>

<resources>

View solution in original post

0 Kudos
23 Replies
andre
I'm new here

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

0 Kudos

... 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:

Unauthorized

0 Kudos

<resource scope="module">lib/openjpa-all-2.1.0.jar</resource> sollte funktionieren

---------

generell gilt:

"

  1. Jars sollten so weit wie möglich "modul-lokal" sein, um Konflikte zu vermeiden ("jar hell")
  2. Klassen aus global-definierten Jars können keine Klassen modul-lokal definierten Jars benutzen (umgekehrt allerdings schon)

"

soo nun hat die Bibliothek noch den Zusatz "scope" bekommen.

Es funktioniert!

Besten Dank dafür!

0 Kudos

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.

0 Kudos

Das müsste dann aber ein Open-JPA Problem sein oder Service-Problem sein. Eventuell postest du mal die Fehlermeldung?

Peter
0 Kudos

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.

0 Kudos

Wenn der Dienst in einem anderem Modul liegt, welches die Bibliothek selber nicht definiert, ist der Fehler natürlich erwartungskonform.

Peter
0 Kudos

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.

0 Kudos