Guten Morgen! Ich bringe es leider nicht zustande, dass ein runnable jar file aufgeht auf meinem Ubuntu. Es geht leider auch unter Windows nicht. Anbei sind alle EInstellungen und Fehlermeldungen. Konkret: -) Bei Doppelklick tut sich nichts -) Wenn ichs in der Konsole starte, sagt er "Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen" --------------------- Zu Punkt 2 habe ich doch alles ins Projekt importiert. Verstehe also den Fehler nicht ganz. Danke im Voraus für jede Hilfe!
Was hast denn für ein Java installiert? java -version
Du zeigst vorbildlich viele Einstellungen, leider aber nur von deiner Entwicklungsumgebung. Ob "ein Jar" zum Laufen kommt, hängt aber von der Umbegung ab wo man es versucht (dein Rechner oder einenfremden). Darauf haben Einstellungen in der IDE seltenst volle Kontrolle. Zeige z.B. mal die Umgebungsvariable CLASSPATH aus dem Terminalfenster. Umfasst diese liste die "anderen Jars" worauf sich dein Programm verlässt? Oder Verzeichnispfade, worin sich diese finden lassen? Wenn nicht, können diese beim Aufruf "java -jar xyz ..." auch gesondert mitangegeben werden. Ebenfalls zeigst Du kein "manifest" File in deinem Jar, auch da können wichtige Angaben zur "Startumgebung" stehen/fehlen.
Grundsätzlich: externe jars müssen sowohl beim kompilieren (der Entwicklungsumgebung) erreichbar sein, als auch beim Starten des Programms (des selbsgemachten jar). Im ersten Fall entspricht das in etwa den Linkoptionen bei trad. Programmiersprachen. Im zweiten Fall entspricht das in etwa den .so (shared objects) Dateien. Mann muss sich i.a. separat um die Einrichtung der 2 Fälle kümmern. Das impliziert U.a. dass Du ev. beim übertragen deines jars auf einen anderen Rechner auch darum kümmern musst, ob externe jars bereits vorinstalliert findest oder ob du sie selber mitbringen musst. Keinesfalls landen externe jars in deinem jar; zumindest ginge das an der Grundidee vorbei.
Java schrieb: > Was hast denn für ein Java installiert? > > java -version Im Bild *eiskaffee schrieb: > Zeige z.B. mal die Umgebungsvariable CLASSPATH aus dem Terminalfenster. Da ich noch ein Neuling in Linux bin, brauche ich auch hier weitere Anweisungen.
Hast Du denn openjfx installiert? sudo apt-get install openjfx
Habe ich ja. Im Eclipse selber startet das JavaFx Programm ohne Probleme. Aber in der Konsole halt nicht.
Etin schrieb: > Java schrieb: >> Was hast denn für ein Java installiert? >> >> java -version > Im Bild > > *eiskaffee schrieb: >> Zeige z.B. mal die Umgebungsvariable CLASSPATH aus dem Terminalfenster. > > Da ich noch ein Neuling in Linux bin, brauche ich auch hier weitere > Anweisungen. echo $CLASSPATH
> *eiskaffee schrieb: >> Zeige z.B. mal die Umgebungsvariable CLASSPATH aus dem Terminalfenster. > > Da ich noch ein Neuling in Linux bin, brauche ich auch hier weitere > Anweisungen.
1 | $ env # all environment variables |
2 | : |
3 | $ env ¦ grep CLASSPATH # only Lines containing CLASSPATH |
4 | : |
5 | $ echo "${CLASSPATH}" # the value for variable CLASSPATH as evaluated |
Lies Dich bitte nebst minimalen BASH Kenntnisse auch in Grundlagen ein, wie Java Programme starten, wie & wo der Classloader Klassendatein&jars suchen geht und welche möglichkeiten es gibt das zu steuern. Zu beiden Themen gibt es online Doku in allerlei Geschmacksrichtungen... Das lässt sich nur mühsam via Forum Dir beibringen.
*eiskaffee schrieb: > Lies Dich bitte nebst minimalen BASH Kenntnisse auch in Grundlagen ein, > wie Java Programme starten, wie & wo der Classloader Klassendatein&jars > suchen geht und welche möglichkeiten es gibt das zu steuern. > Zu beiden Themen gibt es online Doku in allerlei Geschmacksrichtungen... > Das lässt sich nur mühsam via Forum Dir beibringen. Mir ist klar, dass ein Java Programm über die Umgebungsvariable herausfindet wo sich die benötigen Pakete, Klassen befinden. Könntest du mir eine geeignete Anleitung genau für meinen Fall per Link zukommen lassen?
Etin schrieb: > Habe ich ja. Im Eclipse selber startet das JavaFx Programm ohne > Probleme. Aber in der Konsole halt nicht. Du hast es wohl geschafft deine Eclipse IDE für dieses eine Projekt passend herzurichten. Guter Start. Wie oben geschrieben: wenn du nun dein "Produkt" (dein JavaProgramm in deinem Jarfile) anderswohin transportierst (dein Rechner, ein fremder Rechner) musst Du Dich abermals um die Installation kümmern, sodass die Voraussetzungen erreicht sind welche Du Dir für Dein Programm ausgesucht hast. Eben: u.a. CLASSPATH und fremde Jars. Dass musst Du für unterschiedliche Plattformen (*nixe, winxy*, *droid, ios*, ...) durchaus unterschiedlich umsetzen.
Packe die fehlenden Komponenten einfach mit ins jar.
> Mir ist klar, dass ein Java Programm über die Umgebungsvariable > herausfindet wo sich die benötigen Pakete, Klassen befinden. Na also: dann beschreibe mal GENAU WAS Dein Programm benötigt un richte es ein. > Könntest du > mir eine geeignete Anleitung genau für meinen Fall per Link zukommen > lassen? Bis jetzt kennst NUR DU genau DEINEN FALL. Dazu gibt es unmöglich eine vorgefertigte Anleitung... Die Referenzdoku von Java (Oracle/Sun) ist sicher vollständig!
DPA schrieb: > Packe die fehlenden Komponenten einfach mit ins jar. Naja: wenn nun jedes Kinkerlitzchenprogramm sein eigenes JavaFX (und andere) mitbringt, wird es eben Bloatware. Genau das ist gegen die Grundidee externer Jars. JavaFX (u.a. fremde jars) ist für alle es nutzende Programme dasselbe und soll deshalb genau nur 1x Pro Rechner installiert sein. (abgesehen von ev. unterschidliche Versionen, aber diese lassen sich parallel vorhalten) Man richtet ja auch nicht separate individuelle Betriebssysteme ein je für Schreibprogramm, Tabellenkalkulation, usw.
Etin schrieb: > Frank W. schrieb: >> echo $CLASSPATH > > Da steht leider nichts drinnen :D GUT. (ja: es geht auch mit leerer CLASSPATH!) Da nur du weisst WAS dein Programm benötigt, teile ihm diese Info mit. Entweder in dem Du beim Aufrufbefehl "$ java -jar ..." diese Info mit den entspr. Optionen hinschreibst oder um bei jedem Aufruf weniger zu schreiben es in den Umgebungsvariablen vorbereitest. Etin schrieb: > Mir ist klar, dass ein Java Programm über die Umgebungsvariable > herausfindet wo sich die benötigen Pakete, Klassen befinden. Es ist dir also klar :-) nur uns hier im Forum hast Du es noch nicht mitgeteilt...
Steck die ganzen Screenshots in das jar-file, dann geht es sicher!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.