Jar Export resourcen einbindung -> Fat Jar

Status
Nicht offen für weitere Antworten.

Keylan

Mitglied
Hallo zusammen,

Ich arbeite mich jetzt einige Tage in Java und ein bestimmtes Projekt ein. Mit der Programmiersprache an sich komme ich auch recht gut klar, allerdings bin ich wohl über einige grundlegende Dinge in sachen "Aufbau" und "Ausführung" zu schnell gesprungen.

Heist ich habe ein wunderschönes Lauffähiges Programm, das sich als Client bei einem Server anmeldet und dort Lizenzinformationen einer Application holt.

Zumindest Lauffähig in meiner IDE.

Also system Windows (XP und Vista) IDE Eclipse3.4.2 Java sdk1.6_13 jre6

Das das ganze per export in eine Jar geht weis ich auch, dank beschnittenem Fat Jar (runnable Jar) sollte es eigentlich auch sehr einfach sein. Ist es aber nicht, wenn ich auf diesem wege ein Jar erstelle findet er trotz allen bestimmte Classen nicht, die main schon aber nicht die aus externen jars.

Eine einfache "hello world" jar habe ich natürlich problemlos zum laufen gebracht.

Ja ich habe inzwischen rausgefunden das dies auch nicht wirklich gedacht ist ein umweg ist hier beschrieben:

Eclipse

Bekomme ich aber auch nicht ganz hin liegt warscheinlich an zu wenig ahnung von ant-sript (bzw xml überhaupt) und erst recht der Manifest geschichte.

Nichmal das richtige Fat Jar Plugin habe ich eingeunden bekommen ;(

So warum belästige ich euch hier damit? ich hätte 2 Wünsche

Wunsch 1: wenn es einen eifachen ja nahezu idiotensicheren weg gibt eine Programm lauffähig zu exportieren sobald es in Eclipse lauffähig ist her damit, beachte IDIOTENSICHER, also unabhängig davon wie chaotisch ich evtl. externe Jars wo eingepflegt habe, und was man sonst noch so alles danebensetzen kann.

Wunsch 2: Gutes infomaterial, ich habe mir durchaus schon 2-3 online Javabücher zu Gemühte geführt war also schon auf der Insel und co. Die Abschnitte außerhald der Sprache sind aber doch recht kurz gefasst.
Ich bräuchte so eine Mischung aus generellem Programmaufbau (wo hinterlege ich benötigte Bibliotheken bzw. Jars) und einer Eclipse spezifischen Einführung (wie binde ich diese richitg ins Projekt ein).

Ich fürchte ich muss gerade für die schnellen Erfolge die mir Eclipse ermöglicht hat bezahlen, weil ich die in der IDE gegebnen Stuckturen der Projekterstellung gar nicht richtig nachvolzogen habe. Das würde ich jetzt gerne nachholen.
 

mrbela

Bekanntes Mitglied
mh, zu Deinem Problem.. warum läuft denn die jar nicht, also Dein exportiertes Programm??? Was läuft nicht, besser gefragt.
Kann es sein, dass Dein Projekt bereits externe jars benötigt, die Du zB nicht mit exportierst oder sowas??

Deine Frage bzgl. Eclipse beantwortet Dir am Besten google. Guck zB mal hier rein:

eclipse jar erstellen - Google-Suche

Es gibt natürlich auch Eclipse Bücher, aber ich denke, dass man diese nicht brauch, solange man nicht wirklich in die Materie eindringt, zB wenn Du programmierer irgendwo bist.

vlg, armin
 

Keylan

Mitglied
Danke für deine Antwort armin,

ich dachte es wäre deutlich was nciht funktioniert, aber warscheinlich habe ich es nicht genug hervorgehoben.

Die exportierte jar findet bestimmte Klassen nicht, heist ich bekomme eine fehlermeldung auf der Konsole (DOS-Fenster) java.lang.NoClassDefFoundError oder war es ohne das Error? weis ich leider gerade nichmehr ganz genau.
In Eclipse läuft das ganze natürlich einwandfrei. Das dieses Problem wohl mit einem Fehlerhafen export der exteren jar-Files die ich nutze zusammenhängt weis ich auch schon, nur ob es wirklich daran liegt das diese gar nicht eingebunden werden, oder ob nur die Manifest nicht richtig ist das er sie nciht findet das weis ich nicht.

Eigentlich sollte über den "runnable JAR" export aber jede (auch externe) Klasse auf die im Projekt verwiesen wird eingebunden werden und entsprechend in der Manifest eingetragen.

Ich habe sogar schon versucht alle betroffenen Klassen aus den externen Jar's einzeln rauszukopieren und dann einzubinden, aber auch dies Scheitert. Warscheinlich weil ich noch immer keine Ahnugn habe wie Java eine Jar eigentlich interpretiert, und wie die Manifest dabei genau verwendet wird.

Der google Link ist nett gemeint hilft aner nicht, ich beschäftige mich jetzt im ganzen 1,5 Tage mit dem Export aus Eclipse und mit der Google-Allergie vieler Forennutzer wäre ich sicher noch nicht so weit gekommen.

Eine normale Jar erstellen aus "hello world"-Projekt ist ja wie gesagt auch kein Problem.

Ich bräuchte schon eine refferenz auf ein Werk das wirklich den Projektaufbau inerhalb und Außerhalb der IDE beschreibt. Da führen viele wege nach Rom, aber nur wenige sind Sauber und entsprechen gutem Stil
 
J

JohannisderKaeufer

Gast
Ein jar ist ein Archiv und kann wie eine zipdatei geöffnet werden.
Darin befindet sich eine Manifest datei.

Poste mal die manifest.

Dort muß der Classpath gesetzt sein, was ich hier mal vermute fehlerhaft oder nicht vorhanden ist.
 

Keylan

Mitglied
Sorry, an die Manifest komme ich erst am Montag wieder, da ich als Werksstudent nur Teilzeit an dem Projekt sitze.

Es kann natürlich sein das der Classpath nicht richtig da drin steht, geprüft ob er drin steht habe ich aber, vielmehr fürchte ich das die Klassen gar nicht eingepflegt werden.

Was ich überhaupt nicht verstehe ist, wie man denn per Ferndiagnose den Classpath korrigieren will, wenn man gar nicht weis wie die Bibliotheken (externen jars) überhaupt eingebunden sind.

So wirklich kompiziert scheint mir der classpath an sich nicht zu sein wenn man die Bib's richtig einbindet, man schreibt doch nur verweise auf den Bibliotheksordner, und den Ordner der wiederum auf die externe Jar verweist. Ok ich will mich mal nicht zu weit aus dem Fenster lehnen, selbst wenn ich es halbwegs verstanden habe liegt der Teufel ja oft im Detail.

Aber hat den keiner eine Quelle für mich bezüglich Projektaufbau und Manifestdatei?
Ich habe grade nochmal meine Einstiegswerke befragt, udn da wird gerade noch die existenz einer Manifest beschrieben aber nix über Aufbau und Funktionsweise.

Ich würde das ganze gern am Wochenende durcharbeiten, damit ich am Montag sinnvoll weiter arbeiten kann. Ein allgemeines Verständniss würde mir langfristig doch auch mehr bringen als eine schnelle korrektur die ich selbst gar nicht nachvollziehe.

Nicht das ich nicht auch dafür Dankbar währe und versuchen würde daraus zu lernen.

Gruß Keylan
 
Zuletzt bearbeitet:

Keylan

Mitglied
So, habe es soweit hinbekommen.

Der Fehler lag definitiv nicht in der Manifest, sondern die externen Jars wurden gar nicht eingebunden.

Hatte für das Projekt "Add exteral Jars" bei der einbindung gewählt und dann setzt Eclipse nur einen Pfad, kopiert die Dateien aber nicht ins Projekt.

Also erst nen Folder als lib erstellen Jars reinkopieren, und dann als Bibliothek noch in den Buildpath einbinden.

Schwupps werden meine Jars ausführbar aber eben auch gleich 8MB groß. (für 200 Zeilen eigenen Code)

Leider laufen sie dann auf einem fremden Rechner nur wenn ich nochmal die Kompletten eingebundenen Jars mitliefere. Und dann müssen die die neu erstellen ausführbaren Jars zwingend in deren Verzeichniss liegen.

Nachdem ich mein Projekt mit geringen Modifikationen mehrfach brauche wird das ganze fast 100MB groß, irgentwie habe ich das Gefühl das ich mir einige Datein Sparen könnte, kann ja nicht Sinnvoll sein alle exteren Klassen einmal im Jar, und dann nochmal außerhalb hinterlegen zu müssen.

Hat vieleicht jemand ne Idee warum es bei mir anscheinend nur Klappt wenn ich das alles Doppelt und dreifach ablege, und auch noch nen Tipp wie ich das ganze verschlanken kann?

Gruß
Keylan
 
J

JohannisderKaeufer

Gast
Code:
dasJar.jar
      - Meta-inf
            Manifest
      - packeges
            *.class

eineWeiterVersion.jar
      - Meta-inf
            Manifest
      - packeges
            *.class

lib-Ordner
      -externes.jar

Es gibt die Möglichkeit das Eclipse die Jars analysiert und die class files der externen libs in das jar einbindet -> große Datei.

Möglichkeit 2.
Die externen libs werden in einem extraordner mitgeliefert auf den Referenziert wird.
Kleine Datei + libs.
Wenn man mehrere jars erstellt, können sie die gleichen libs verwenden. Nachteil ist, das die libs mitgeliefert werden müssen.

In Eclipse einmal ein jar erstellen und manifest generieren lassen und im workspace abspeichern.
Dann manifest bearbeiten, classpath setzen.
Beim erneuten erstellen der jar die manifest angeben.

Beispiel für eine manifest
Code:
Manifest-Version: 1.0

Class-Path: externes.jar

Main-Class: package.Main

Was hingegen nicht geht, bzw. nichts bringt, ist ein lib Ordner in der erstellten jar.
Ich lasse mich allerdings gerne eines besseren belehren.
 

sliwalker

Top Contributor
Hi,

auch wenn Du es nicht hören möchtest.
Programme und vor allem Programme zur Auslieferung bereitstellen ist nicht mit "Idiotoensicher" zu bezeichnen.
Der Exportmechanismus befolgt gewisse regeln, die der Entwickler kennen muss damit es funktioniert.
Aber Kopf hoch, dass ist eigentlich gar nicht schwer.

Bislang hast Du ja schon alles richtig gemacht.
lib-Ordner erstellen, jars reinkopieren, im Projekt in Buildpath hinzufügen, und probieren ob Du kompliieren kannst. Wenn ja, Rechtsklick auf das Projekt, den normalen eclipse 3.4.1 Export nehmen, und Exportieren. Wähle alles in Deinem Projekt aus (keine bin-Ordner oder .class files., lass das Manifest generieren, wähle die main-Methode aus und dann sollte es funktionieren.

Das exportierte jar-File kannst Du überprüfen. Entpacke es und guck im Projekt in den lib-Ordner. Du solltest alles jars finden können.
 

Keylan

Mitglied
vielen Dank sliwalker für die Aufbauenden Worte,

und natürlich auch an JohannisderKaeufer mit den erklärenden Beispielen.

Das hatte ich zwar alles per Google schon gesehen, aber der Nachdruck das darin auch schon alles steckt (was bei manchen Google ergebnissen anders bzw. viel mehr aussah) hat doch geholfen an den richtigen Stellen nach Fehlern zu suchen.

Die Methode alles in eine Datei zu bekommen habe ich inzwischen verworfen. Da in den benutzten externen JAR's auch diverse dll-Dateien liegen bin ich am zweifeln ob es Überhaupt möglich ist diese Lauffähig einzubinden.

Zudem erscheint mir die Referenz auf eine gemeinsam nutzbare lib auch sauberer.

Auf diesem Wege habe ich das Ganze jetzt auch hinbekommen, und bin sehr zufrieden.
Zwar musste ich für alle Erstellen JAR's nochmal Manuell entpacken die Manifest ändern und wieder zipen und umbenennen, wie man die Manifest gleich richtig erzeugen lässt bekomme ich aber bestimmt selbst schnell raus, hab ich mir jetzt noch gar nicht weiter angesehen.:toll:

In diesem Sinne vielen dank an alle beteiligten, mein Problem ist somit gelößt.

PS: Erschreckend wie ich mir vorkam als ich Eure Kommentare gelesen habe. Ihc dachte keiner versteht mein Problem, und das wasihr mir dazu geschrieben habt hilft mir eh nicht weiter bzw. ist viel zu ungenau beschrieben.
Im Nachhinein wo langsam das Verständniss für den Aufbau gereift ist erscheinen die Kommentare aber verständlich und zielführend.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Doppeltes Gleichheitszeichen bei Export Java Java Basics - Anfänger-Themen 5
C Erste Schritte Bilder nach Export anzeigen Java Basics - Anfänger-Themen 0
krgewb Runnable JAR File Export Java Basics - Anfänger-Themen 11
J Eclipse Export Probleme Java Basics - Anfänger-Themen 25
S Export aus JList Java Basics - Anfänger-Themen 6
F .csv Export aus einer list Java Basics - Anfänger-Themen 25
I DATEV import / export Java Basics - Anfänger-Themen 2
I .jar startet nicht nach Export Java Basics - Anfänger-Themen 27
K Export nach Jar mit Bilder Java Basics - Anfänger-Themen 2
P Classpath jdbc-Treiber kann nach export in jar-File nicht mehr geladen werden Java Basics - Anfänger-Themen 2
C Jar Datei startet nicht nach Export mit Eclipse Juno Java Basics - Anfänger-Themen 2
Gossi Eclipse stellt sich beim Export quer... Java Basics - Anfänger-Themen 4
Kenan89 Export klappt nicht Java Basics - Anfänger-Themen 2
G Erste Schritte Einbindung von Grafiken beim Eclipse Export in Jar File Java Basics - Anfänger-Themen 9
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
J Compiler-Fehler Eclipse .jar Export klappt nicht. Java Basics - Anfänger-Themen 17
J Export als Jar mit ODBC-Treiber Java Basics - Anfänger-Themen 8
K Fenster öffnen nicht nach Export in jar File Java Basics - Anfänger-Themen 10
B CSV - Export Java Basics - Anfänger-Themen 2
darekkay Ordnerstruktur beim Jar-Export Java Basics - Anfänger-Themen 5
C Eclipse JAR Export could not find main class Java Basics - Anfänger-Themen 13
O Export mit Eclipse in jar funktioniert nicht ! Java Basics - Anfänger-Themen 2
C Eclipse makefile export Java Basics - Anfänger-Themen 13
Fu3L Programm findet nach .jar-Export Dateien nicht Java Basics - Anfänger-Themen 3
M Grafik export in ein Jar File Java Basics - Anfänger-Themen 5
L Export JAR mit External JAR Java Basics - Anfänger-Themen 3
B Export in JAR Java Basics - Anfänger-Themen 4
P Fehler bei jar Export aus Eclipse Java Basics - Anfänger-Themen 3
K Export Eclipse-Project unter MAC OS X Java Basics - Anfänger-Themen 2
G Eclipse, FatJar, Export, Classpath Java Basics - Anfänger-Themen 13
G Programm-Export (mit DLLs?) Java Basics - Anfänger-Themen 4
S Export nach Excel in Java Java Basics - Anfänger-Themen 7
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
L Resourcen laden klappt nicht Java Basics - Anfänger-Themen 2
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
M Resourcen schonnendes Zeitabfragen Java Basics - Anfänger-Themen 11
Burny91 Resourcen mit relativen Pfadangaben laden Java Basics - Anfänger-Themen 2
A Resourcen Java Basics - Anfänger-Themen 2
M Resourcen richtig laden (Bild, Musik) Java Basics - Anfänger-Themen 2
D JWS - Resourcen aus eigenen Jar laden? Java Basics - Anfänger-Themen 3
B Einbindung e(fx)clipse in Eclipse Java Basics - Anfänger-Themen 11
F Warum erhalte ich diese Fehler bei der Einbindung von SQLite JDBC in Eclipse? Java Basics - Anfänger-Themen 1
J Einfache einbindung eines Bildes in ein Applet Java Basics - Anfänger-Themen 4
B Linux, Dateipfad, Einbindung externer Dateien.. Java Basics - Anfänger-Themen 7
G Probleme bei Einbindung von Methoden Java Basics - Anfänger-Themen 21
B Fehler bei Einbindung von Klasse aus externem Paket Java Basics - Anfänger-Themen 2
H javac Befehl trotz Variablen einbindung ned gefunden Java Basics - Anfänger-Themen 23
C Einbindung von HTTPClient Java Basics - Anfänger-Themen 2
G Einbindung von MVC (Model-View-Controll) Java Basics - Anfänger-Themen 8
S ClassNotFoundException trotz JAR Einbindung in Eclipse Java Basics - Anfänger-Themen 2
D Probleme nach Einbindung einens neuen Packages Java Basics - Anfänger-Themen 5
F Einbindung externer JARs Java Basics - Anfänger-Themen 2
A Einbindung von .wav files. Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben