2009-06-30 7 views
0

Ich habe eine Java-Anwendung in Eclipse erstellt, die comm.jar und jexcel.jar und .property Dateien benötigt, so habe ich Libray hinzugefügt. Ich möchte eine JAR-Datei aus meiner Java-Anwendung erstellen, einschließlich der externen JAR-Dateien, die der Anwendung hinzugefügt wurden.Erstellen Sie Java-Anwendung JAR-Datei in Eclipse

Wie kann ich es tun? Zum Ausführen von serialport-Programmen habe ich win32.dll in java_home/bin und comm.jar in java_home/jre/lib und javax.comm.properties in java_home/jre/lib kopiert, aber wenn Sie das Produkt liefern, sollte es nur laufen, indem Sie die jre benötigen.

Wie kann ich das lösen? Bitte hilf mir.

Vielen Dank im Voraus, Suma

Antwort

2

Obwohl Ihre Frage nicht ganz klar ist, ich die Fat Jar Plugin empfehlen die Verwendung sollten Sie erlauben zu erreichen, was Sie wollen.

+0

Aus Neugier, was bietet dies, dass die Executable Jar Funktionalität nicht hat? – dimo414

+0

Es erstellt nur eine große Jar-Datei mit allem (Bibliotheken, Eigenschaften usw.) in einer Datei. – borjab

+0

und bietet einen Classloader, der verwendet werden kann, um die abhängigen JAR-Dateien aus dem Jar zu laden, was meiner Meinung nach kein Standardverhalten ist. – djna

2

Sie können Datei> Exportieren> Ausführbares Glas verwenden, das alle Bibliotheken enthält. Es gibt auch ein Kontrollkästchen, um eine Ameisen-Build-Datei sowie das Jar zu generieren, um es weiter anzupassen (ich mache zum Beispiel alle Pfade relativ und entferne das Hauptklassen-Flag).

+0

ja, ich habe jar erstellt, wie du gesagt hast, dass es läuft, aber es erkennt keine ports, ich bekomme keine solche port exception –

+0

Ich kann mir nur vorstellen, dass ein fehler in deinem code ist - vielleicht verweisst du irgendwo einen relativen dateipfad? Es sollte kein Problem mit der JAR-Datei geben, die nicht in Ihrem Code enthalten ist. – dimo414

+0

Ich kann mir nur vorstellen, dass ein Fehler in Ihrem Code ist - vielleicht verweisen Sie irgendwo auf einen relativen Dateipfad? Es sollte kein Problem mit der JAR-Datei geben, die nicht in Ihrem Code enthalten ist. Edit: Scratch das, ich merke, Sie laden auch DLLs, die explizit als Teil des Build angegeben werden müssen, die Sie mit der Ant-Datei haben müssen. Ich habe noch keine DLLs in Java benutzt, also konnte ich nicht sicher sagen. – dimo414

1

Sie haben zwei "Pfad" Probleme. Der Java-Klassenpfad und der Pfad, von dem dlls geladen werden.

Wenn Sie einen Java EE-Anwendungsserver oder OSGi verwenden, wird die Steuerung dieser Pfade von den jeweiligen Laufzeiten berücksichtigt. Sowohl Java EE als auch OSGi sind bei kleinen Projekten wahrscheinlich übertrieben.

In dem Fall, dass Sie liefern:

  1. Ihre Anwendung JAR
  2. Die abhängigen Gläser
  3. Die DLLs

Ich schlage vor, dass Ihre App zur Installation Sie diese Artefakte in einen Ort geeignete Verzeichnisstruktur, zB .../myapp/lib für die jars und .../myapp/bin für die dlls. Kopiere sie nicht in die Infrastruktur-Verzeichnisse, zum Beispiel die JRE-Lib und bin, oder in Windows32 - das führt nur zu Version-Albträumen und Mysterien, wenn jemand ein neues JRE installiert.

Haben Sie diese Struktur, wie man die Wege kontrolliert? Betrachten Sie für den Klassenpfad die Manifest.mf-Datei. tutorial

Für den DLL-Pfad, ich kenne keine gute Alternative zu OS-Level-Umgebungsvariablen ** vor ** Start der JVM. Daher benötigen Sie ein kleines Batch/Shell-Skript, um Ihre App zu starten und den PATH entsprechend einzustellen.

0

Sie können mit der rechten Maustaste auf das Projekt klicken und "Exportieren" sagen. Wählen Sie nun "Java" in der Baumstruktur der Auswahlmöglichkeiten. Wählen Sie darunter "Jar File". Es führt Sie durch den Prozess und ermöglicht es Ihnen, Ihr Projekt als JAR-Datei zu exportieren.

Hope das ist, was Sie suchen.

+0

Dies exportiert jedoch nicht die abhängigen Bibliotheken, daher müssten sie zur Laufzeit manuell neu festgelegt werden, was der Fragesteller zu vermeiden versucht. – dimo414

0

Die kürzlich veröffentlichte Eclipse 3.5 hat eine Export als runnable Jar, die es ermöglicht, alle abhängigen Gläser in einem Unterordner der JAR-Datei zu setzen und das Manifest richtig zu bekommen.

Es ist eine Anpassung des FatJar-Plugins. Funktioniert gut!

Verwandte Themen