executable .jar und lib's

Saduras

Mitglied
Hi,

ich hab ein Java-Programm/Spiel geschrieben und wollte es Heute einer Freundin zeigen.
Ich hab ein JAR-File mit NetBeans erstellt.
Das ausführbare JAR-File funktioniert bei mir auf meinem Mac unter OS X einwandfrei.
Bei ihr klappte es aber nicht und wie ich dann feststellen musste bei mir selbst unter Windows auch nicht.

Ich vermute, dass es daran liegt, dass ich eine Klasse benutze, die in der Standart Java-lib nicht dabei ist.
Java:
 import net.java.dev.transparentlayout.*;

Die Frage ist nun: wie kann das JAR-File so erzeugen, dass es trotzdem funktioniert (also die notwendigen lib-einträge dabei sind)???

Danke!
Gruß,
Saduras
 
G

Gast2

Gast
netbeans erstellt dir im dist ordner nen ordner lib der alle abhängigkeiten enthält.
den ordner legst du einfach deinem jar file bei, dann läuft das auch auf anderen rechnern.,
 

Saduras

Mitglied
oh, da hätte man ja drauf kommen können…danke!

gibt es auch eine Möglichkeit den Ordner mit in die JAR-Datei zu bekommen, so das man am Ende nur eine Datei hat?
 
G

Gast2

Gast
Ja es gibt programme die dir alles in eine jar packen können (z.b. Deliver Your Java Application in One-JAR™ !). Ob und wie gut die funktionieren weiß ich allerdings nicht.
Warum lieferst du das Programm nicht in nem Verzeichnis aus? Dann hast du auch die Möglichkeit libs etc. im nachhinein mal auszutauschen. Nen hübsches start batch dabei und gut is :)
 

Saduras

Mitglied
Da es mein erstes JAVA-Programm ist, dass ich in meiner Freitzeit selbst geschrieben hab, hab ich mir noch nicht all zu viele Gedanken gemacht, wie ich es am besten publiziere.

Im Prinzip würd ich eine einzelne Datei in der alles drin ist, und die noch update-fähig ist schick finden.
Aber vielleicht ist es wirklich besser das ganze als Verzeichnes zu verteilen. Lässt sich so sicher auch leichter Plattformunabhänig konzipieren. Dann muss ich mich nur noch schlau machen, wie man so eine batch-datei schreibt. ^_^

Danke für die schnellen und präzisen Antworten. :)
 
G

Gast2

Gast
Zum starten deines Programms reicht dir schon folgendes:
Code:
start java -jar deineJar.jar
bzw. ohne Konsole:
Code:
start javaw -jar deineJar.jar
 

Saduras

Mitglied
netbeans erstellt dir im dist ordner nen ordner lib der alle abhängigkeiten enthält.
den ordner legst du einfach deinem jar file bei, dann läuft das auch auf anderen rechnern.,

Ich bin nun dazu gekommen, es aus zu probieren und leider funktioniert es nicht. :(
In dem lib Ordner befindet sich nur eine swing-layout-1.0.4.jar. In der konnte ich keine class-Datei für das transparent Layout finden... oder gibt es noch etwas, woran es liegen könnte?
 

krazun

Bekanntes Mitglied
Ich bin nun dazu gekommen, es aus zu probieren und leider funktioniert es nicht. :(
In dem lib Ordner befindet sich nur eine swing-layout-1.0.4.jar. In der konnte ich keine class-Datei für das transparent Layout finden... oder gibt es noch etwas, woran es liegen könnte?


Ich würde es einmal über die Kommandozeile starten, mit dem Befehlen die EikeB schon oben gepostet hat. Dann kannst du ganz genau sehen woran es liegt das es nicht startet, weil er dir bei einem Start per Kommandozeile die Fehlermeldung dort ausgibt.

Ansonsten hab ich keine Ahnung wie genau das bei NetBeans läuft, aber bei Eclipse kann man bei der runnable-jar Erstellung z.b. "package required librarys into generated jar" aktivieren. Dann packt er automatisch alle benötigten Klassen der diversen Librarys mit in deine jar Datei.

Kann es sein das du https://transparentlayout.dev.java.net/ benutzt? Dann versuchs mal mit http://transparentlayout.dev.java.net/files/documents/4162/24697/transplayout-1.01.jar

mfg,
krazun
 
G

Gastredner

Gast
Du musst die in dem lib-Ordner enthaltenen Bibliotheken dem CLASSPATH hinzufügen, damit es funktioniert. Entweder erledigst du dies in einer Batch- bzw. Shell-Datei, mit der du das Programm startest, oder du fügst deine Bibliotheken über das Manifest deiner Jar-Datei dem CLASSPATH hinzu:
Code:
Class-Path: lib/swing-layout-1.0.4.jar
Die Leerzeile am Ende der Datei nicht vergessen!
 

Saduras

Mitglied
Folgendes spukt die Konsole unter Windows beim Aufrufen aus:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: net/java/dev/transparentlayout/TransparentLayout

Es liegt also definitiv an der Verwendung ders Transparent Layout. Die entsprechende jar-Datei hatte ich dabei im lib Verzeichnis (danke krazun), aber die hat NetBeans natürlich nicht eingetragen...

Mir ist auch aufgefallen, laut NetBeans gehört das Transparent Layout zur Java 1.6 Standartbibliothek. Was sicherlich der Grund ist warum es im lib Verzeichnis nach dem build auf fehlt. Wie lässt sich das beheben?

Wie sieht der batch-Befehl zum hinzufügen des CLASSPATH aus? Eine Batch-Datei hilft mir ja nur unter Windows weiter, für OS X/Unix brauch ich dann eine Shell-Datei? (meineShellDatei.shell und sonst auch die Konsolenbefehle drin?)

EDIT:
Ich hab es nun zum Laufen bekommen in dem ich die jar-Datei für das Transparent Layout in NetBeans extra noch mal als lib eingetragen hab. Dann generiert NetBeans alles auch so, dass es auch unter Windows bzw. an einem anderem Rechner funktioniert.
Die jar-Datei für das Transparent Layout liegt bei mir unter lib/ext/. Ist es normal, dass es als Teil der standart Bibliothek erkannt wird?
 
Zuletzt bearbeitet:
D

Danny02

Gast
Im Prinzip würd ich eine einzelne Datei in der alles drin ist, und die noch update-fähig ist schick finden.
Aber vielleicht ist es wirklich besser das ganze als Verzeichnes zu verteilen.

Es gibt etwas das JNLP gennant wird, damit kann man in einer XML datei alle sache über ein programm definieren(wie Libs, start parameter, versions info usw)

in die datei schreibt man dann rein wo die einzel tiele der datei heruntergeladen werden können und nach einem einzigen klick auf diese JNLP datei wird das Programm installiert.

Diese Technik würd für Applets und Webstart benutzt, lässt sich aber auch für einfach e installer routine misbrauchen
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben