Packaging JAR-Datei in der war-Datei

Habe ich eine Reihe von abhängigen Java-Projekte. Ich würde gerne in einem Paket zusammen in einer einzigen JAR-Datei verwendet werden, in mein KRIEG-Datei. Diese Projekte sind auf eine große Anzahl von externen Bibliotheken und Projekte wie log4j, apache-commons usw.

Ich wählen Sie alle Projekte in Eclipse und den export als JAR-Datei, kopieren Sie die JAR-Datei in mein /WEB-INF/lib-Ordner von meinem KRIEG, dann die Bereitstellung der Anwendung. Ich habe folgende Probleme:

  1. ClassNotFoundException. Die web-Anwendung nicht finden können, die Bibliotheken verpackt in meine JAR-Datei. Ich löste dieses problem, indem Sie alle abhängigen Bibliotheken in den /WEB-INF/lib-Ordner und das hinzufügen von class-path-Einträge im MANIFEST.MF der JAR-Datei, ein durchaus schmerzhafter Prozess.
  2. Den Klassen in der JAR-Datei nicht finden kann, property-Dateien verpackt, die im inneren des Behälters. Wie löse ich dieses problem?

Ist es eine standard-Lösung für diese Probleme? Danke.

Warum wollen Sie alle Ihre Abhängigkeiten in einer einzigen jar? Was ist Los mit einfach nur indem alle von Ihnen in WEB-INF/lib? (Auch: Sie brauchen keine Class-Path-Einträge, die webapp hat automatisch Zugriff auf alle jar-Dateien in WEB-INF/lib).
Ich würde lieber halten meiner JAR-Datei selbst enthalten sind und verteilbar, eher als explodierenden unnötige Abhängigkeiten in meinem WEB-INF/lib
Sie sind nicht unnötig, sind Sie? Wenn Sie möchten, dass ein geschlossenes Gefäß, dann nicht die Verwendung von externen Bibliotheken.
Nur ein Wort: maven. Aber Sie scheinen zu sein, vor dem falschen Ende des Pferdes. Eine eigenständige web-Anwendung ist einfach dargestellt, indem die war-Datei und keine JAR-Datei. Setzen Sie Ihre Abhängigkeiten in WEB-INF/lib ist es nicht mehr oder weniger verteilbar.
nicht, wenn die jar-Datei Ein, versucht Zugriff auf Klassen in jar-Datei B, und A und B sind im Krieg, ich habe das gleiche problem!!!

InformationsquelleAutor Justin Wong | 2011-08-01

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.