ubuntuusers.de

java zuweisen

Status: Ungelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

brobon

Anmeldungsdatum:
25. August 2016

Beiträge: Zähle...

nabend,

Ich habe folgende problematik:

Ich versuche derzeit zwei verschiedene programme zum laufen zu bekommen. Dazu benötigt ein programm Java 7 und das andere Java 8.

Java 7 ist als Standart gesetzt und das erste Programm läuft somit auch. Der andere Start funktioniert leider noch nicht so wie ich es versucht habe.

Hier die start.sh:

#!/bin/bash

screen -d -m -S name java -Xmx8G -jar -Dfml.queryResult=confirm jardatei.jar nogui

Ich habe Java 8 installiert und es läuft auch wenn es auf standart gesetzt ist.

Dies ist doch die Option die ich in die .sh editieren muss, jedoch startet die anwendung nicht.

JAVA_HOME=/opt/jdk/jdk1.8.0_101

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Rufe java mit dem vollständigen Pfad auf:

/opt/jdk/jdk1.8.0_101/java -jar XYZ

Vielleicht reicht das schon.

brobon

(Themenstarter)

Anmeldungsdatum:
25. August 2016

Beiträge: 5

Gute Idee, danke!

#!/bin/bash

screen -d -m -S name /opt/jdk/jdk1.8.0_101/java -jar -Xmx8G -Dfml.queryResult=confirm datei.jar nogui

Funktioniert leider nicht. der Prozess öffnet sich gar nicht erst.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Steht denn in deinem Screen etwas drin? Ansonsten wäre es vermutlich leichter es zunächst per Direktaufruf zum Laufen zu bringen. In einen Screen kann man das immer noch legen, da ja die Parameterübergabe teils tricky sein kann. (Hab ich so im Hinterkopf, müsste selbst nochmal nachgucken. Kann aber auch sein, dass es dabei um das Befehle senden an Screen-Konsolen ging. Mein Hinterkopf ist zeitweise stark fragmentiert ☺)

Eventuell gibt dir ja auch ein Aufruf mit

       -verbose:class
           Displays information about each loaded class.

       -verbose:gc
           Displays information about each garbage collection (GC) event.

       -verbose:jni
           Displays information about the use of native methods and other Java Native Interface (JNI) activity.

mehr Ausgaben, falls es zu einem Fehler kommt.

brobon

(Themenstarter)

Anmeldungsdatum:
25. August 2016

Beiträge: 5

1
2
/opt/jdk/jdk1.8.0_101/java -jar XYZ datei.jar
-bash: /opt/jdk/jdk1.8.0_101/java: No such file or directory

so mal ne andere idee...

Was wäre wenn ich ein neuen user anlege und ihm die neue JAVA_HOME gebe und das Programm dann mit dem neuen User starten lasse?

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Wäre auch eine Möglichkeit, aber etwas übertrieben ☺

Sorry, javaliegt im Unterordner "bin". Suche mal mittels

find /opt/jdk/jdk1.8.0_101/ -type f -name java

und passe den Pfad entsprechend an. Müsste aber rein theoretisch

/opt/jdk/jdk1.8.0_101/jre/bin/java

sein.

brobon

(Themenstarter)

Anmeldungsdatum:
25. August 2016

Beiträge: 5

hehe ja das habe ich dann auch bemerkt und auch schon berücksichtigt. Ich habe das leise gefühl, dass wir dem Ziel näher kommen. Nun muss ich nur noch eine sache beheben... "Unable to access jarfile name.jar" {{{#!code bash /opt/jdk/jdk1.8.0_101/bin/java -jar name.jar }}} Ja ich bin im unterordner, dort wo die Datei liegt

Mit dem Direkten ausführen gab es probleme. Habe meine start.sh editiert und nun funktioniert es. Dein erster Einwand war Gold richtig mit /opt/jdk/...

Vielen Dank ☺

Zu guter letzt falls jemand das selbe hat meine editierte start.sh:

#!/bin/bash

screen -d -m -S prozess /opt/jdk/jdk1.8.0_101/bin/java -Xmx8G -jar -Dfml.queryResult=confirm Programm.jar nogui

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Na, dann absoluten Pfad eintragen ☺

Ob es eine Option für einen "execute path" gibt, weiß ich leider auch nicht, hab in der Manpage gerade nur was für class und lib gefunden.

brobon

(Themenstarter)

Anmeldungsdatum:
25. August 2016

Beiträge: 5

brobon schrieb:

hehe ja das habe ich dann auch bemerkt und auch schon berücksichtigt. Ich habe das leise gefühl, dass wir dem Ziel näher kommen. Nun muss ich nur noch eine sache beheben... "Unable to access jarfile name.jar" {{{#!code bash /opt/jdk/jdk1.8.0_101/bin/java -jar name.jar }}} Ja ich bin im unterordner, dort wo die Datei liegt

Mit dem Direkten ausführen gab es probleme. Habe meine start.sh editiert und nun funktioniert es. Dein erster Einwand war Gold richtig mit /opt/jdk/...

Vielen Dank ☺

Zu guter letzt falls jemand das selbe hat meine editierte start.sh:

#!/bin/bash

screen -d -m -S prozess /opt/jdk/jdk1.8.0_101/bin/java -Xmx8G -jar -Dfml.queryResult=confirm Programm.jar nogui

Hab mein letzten Beitrag noch editiert.

Ich Danke dir nochmal 😉

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Die Variable JAVA_HOME würde ich trotzdem korrekt setzen. Wenn diese einen falschen Wert hat, kann es zu Problemen kommen.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

misterunknown schrieb:

Die Variable JAVA_HOME würde ich trotzdem korrekt setzen. Wenn diese einen falschen Wert hat, kann es zu Problemen kommen.

Und wie macht man das richtig bei zwei Java-Versionen? Kann man die zwischendurch einfach "wechseln", da diese ja an sich global eingestellt wird?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

ChickenLipsRfun2eat schrieb:

misterunknown schrieb:

Die Variable JAVA_HOME würde ich trotzdem korrekt setzen. Wenn diese einen falschen Wert hat, kann es zu Problemen kommen.

Und wie macht man das richtig bei zwei Java-Versionen? Kann man die zwischendurch einfach "wechseln", da diese ja an sich global eingestellt wird?

Wechseln tut man mit dem Alternativen-System, aber das will man eigentlich nicht, weil das den systemweiten Default umstellt. Wenn man spezielle Anwendungen hat, die eine andere Version erfordern, dann sollte man diese mit einem entsprechenden Skript starten. Ich würde dann immer so etwas machen:

1
2
3
4
5
#!/bin/sh

export JAVA_HOME=/opt/jdk/jdk1.8.0_101

exec "$JAVA_HOME/bin/java" -jar DieAnwendung.jar "$@"

Dann kann man auch noch weitere Kommandozeilenargumente übergeben. Noch besser ist eigentlich, wenn man das Home automatisch bestimmt oder aus einer Umgebungsvariable pro Hauptversion zieht (also JAVA_8_HOME, JAVA_9_HOME). Dann muss man bei Versionswechseln nur eine Stelle ändern oder sogar gar nicht (bei der automatisierten Variante).

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

ChickenLipsRfun2eat schrieb:

Und wie macht man das richtig bei zwei Java-Versionen?

Einfach in der start.sh setzen.

Kann man die zwischendurch einfach "wechseln", da diese ja an sich global eingestellt wird?

Man muss sich entscheiden, welche Java-Version global zur Verfügung gestellt werden soll. Diese steht per Default in der Variable "JAVA_HOME" (sofern man die global setzt). Für einzelne Programme, die eine andere Java-Version benötigen gehört die Definition ins Startskript.

Will man global zwischen verschiedenen Java-Versionen wechseln, geht das mit update-alternatives:

update-alternatives --config java

Das funktioniert natürlich nur mit Java-Versionen die aus dem Paketmanagement kommen. Die Variable JAVA_HOME wird dabei nicht gesetzt, sondern ist leer.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Super. Wieder was gelernt 😉 Danke!

Antworten |