Forum: PC-Programmierung Runable Jar File (Java Fx) funktioniert nicht Ubuntu


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Etin (Gast)



Lesenswert?

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!

von Java (Gast)


Lesenswert?

Was hast denn für ein Java installiert?

java -version

von *eiskaffee (Gast)


Lesenswert?

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.

von *eiskaffee (Gast)


Lesenswert?

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.

von Etin (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Java (Gast)


Lesenswert?

Hast Du denn openjfx installiert?

sudo apt-get install openjfx

von Etin (Gast)


Lesenswert?

Habe ich ja. Im Eclipse selber startet das JavaFx Programm ohne 
Probleme. Aber in der Konsole halt nicht.

von Frank W. (wesoft) Benutzerseite


Lesenswert?

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

von *eiskaffee (Gast)


Lesenswert?

> *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.

von Etin (Gast)


Angehängte Dateien:

Lesenswert?

Frank W. schrieb:
> echo $CLASSPATH

Da steht leider nichts drinnen :D

von Etin (Gast)


Lesenswert?

*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?

von *eiskaffee (Gast)


Lesenswert?

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.

von DPA (Gast)


Lesenswert?

Packe die fehlenden Komponenten einfach mit ins jar.

von *eiskaffee (Gast)


Lesenswert?

> 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!

von *eiskaffee (Gast)


Lesenswert?

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.

von *eiskaffee (Gast)


Lesenswert?

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...

von Proktologe (Gast)


Lesenswert?

Steck die ganzen Screenshots in das jar-file, dann geht es sicher!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.