2009-08-10 5 views
0

Ich habe 2 Anwendungen als app1.war und app2.war auf jboss bereitgestellt. Diese beiden Apps verwenden ein gemeinsames Java-Paket, z. B. myPackage. Früher sah meine Kriege wie dieserJar in War - NoClassDefFound Ausnahme

======================================== ============================

app [12] .war/
----- web.xml
----- App bestimmte Klassen (Class-Dateien wie)
----- appClass1.class
----- appClass2.class etc ..
----- WEB -INF/
----- myPackage/(dies war nur ein Ordner unter dem Krieg, kein Jar-Paket)
---------- cla wie
---------- common_class1.class sses mit dem gemeinsamen Paket
---------- common_class2.class
---------- gehören.
----------.

============================================= ========================

Aber dies erstellt Probleme, da beide gemeinsame Klassen die gleichen Namen haben würden etc .. in beide Kriegsdateien. Also habe ich beschlossen, das gemeinsame Paket als JAR-Datei zu kompilieren und ließ ihn in WEB-INF/lib in jedem der Krieg Dateien und jetzt ist mein Krieg Datei sieht aus wie

============ ================================================= ==============

app [12] .war/
----- web.xml
----- app spezifische Klassen (Class-Dateien wie)
----- appClass1.class
----- appClass2.class etc ..
----- WEB-INF/
---------- lib/
---------- myPackage.jar (das ist jetzt ein jar-Paket)
---------- myPackage/
----------- ---- Klassen, die zum gemeinsamen Paket gehören, wie
--------------- common_class1.class
--------------- common_class2. Klasse
---------------.
---------------.

============================================= ===========================

Aber jetzt meine app spezifischen Klassen, die Zugriff auf Klassen-Dateien mit myPackage. jar throw java.lang.ClassNotFoundException Ausnahme.

Ich googelte für 3-4 frustrierende Stunden, aber nichts adressierte dieses spezielle Problem. Ich mache wahrscheinlich etwas Unverschämtes falsch. Kann mir jemand schlau genug helfen?

PS: meine Kriege in JBOSS 4.2.3

Dank einer Tonne ich einsetzen. ~ Manoj

Antwort

0

JBoss hat seine eigenen versionsabhängigen Besonderheiten, wenn es um Classloading geht. Diese Links können Sie helfen:

Aber wenn beide Ihre WARs die gleiche Version der Common-Paket benötigen, könnten Sie die JAR für dieses Paket geschnürt in den lib-Ordner der entsprechenden Server-Konfiguration (zB server/default/lib), anstatt ihn in den WAR-Dateien zu haben.