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
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
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
|
| /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
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Wäre auch eine Möglichkeit, aber etwas übertrieben ☺ Sorry, java liegt 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
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
Ehemalige
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
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
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13091
|
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: | #!/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
Ehemalige
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
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Super. Wieder was gelernt 😉 Danke!
|