Kann man einem Programm beibringen das es nur eine spezielle Javaversion nutzen soll?

Hallo!
Ich habe mal wiede rProblememit meinem XDMAN.
dies ist installiert ebenso die benötigte JAva 11 Version.

archlinux-java status
Available Java environments:
  java-11-openjdk
  java-16-openjdk (default)
  java-8-openjdk/jre

Nun funktioniert XDMAN nicht mehr seit die 16er, per Update, eingespielt wurde.

Doch ich würde es gern wieder nutzen.
Daher sie Frage:

“Gibt es eine Möglichkeit dafür zu sorgen das XDMAN immer nur die Java 11 nutzt?”

MfG R.Lehmeier

Das sollte so gehen:

PATH="/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH" xdman

Dann wird der Suchpfad so geändert, dass Java Version 11 zuerst genommen wird, da zuerst in der Liste.

Java - ArchWiki

Ansonsten…

sudo archlinux-java set java-11-openjdk

nun wird immer die 11er version verwendet.

Danke für diese Hilfe.
Wenn ich

PATH="/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH" xdman

in den Terminal eingebe gilt es aber nur für eine Sitzung.
Wenn ich es dauerhaft haben will, muß ich dann

export PATH="/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH" xdman

eingeben ?

Eigentlich gilt das dann nur solange der Befehl xdman ausgeführt wird.

Mit export ist es dann für die aktuelle Terminal-Sitzung aktiv.

Wenn du es dauerthaft have willst, dann verwende zum Beispiel ein alias in der ~/.bashrc Datei:

alias xdman="PATH=/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH xdman"

und in die Desktop-Datei musst die Exec Zeile ändern:

Exec=env PATH=/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH /usr/bin/xdman

Weiß nicht nicht wie die bei dir aussieht und ist nur ein Beispiel.

Ich habe

alias xdman="PATH=/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH xdman"

mal bei /home/user/bashrc, in die unterste Zeile eingepflegt - leider ohne Erfolg.

Entweder ich habe etwas falsch gemacht ode rhier ist etwas anders konfiguriert.
Was ich mir aber nicht vorstellen kann da ich noch nichts in de rbashrc geändert hatte.

Natürlich funktioniert das dann nur im Terminal… hm… dann mach es mal so wie in der archlinux wiki:

alias xdman="export PATH=/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH; exec /usr/bin/xdman"

oder erstell ein shell script:

#!/bin/sh

export PATH="/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH"
exec /usr/bin/xdman "$@"

mit dem name xdman unter ~/.locale/bin/

Dann füge ganz oben in ~/.bashrc das ein:

export PATH="$HOME/.local/bin:$PATH"

Dann sucht der zuerst in deinem home Pfad, wenn du xdman ausführst.

Kann es aber nicht testen, da ich xdman nicht verwende, aber generell sollte es so funktionieren. Da musst du schon ein wenig probieren…

Danke für den Tip, werde ich ausprobieren.

Allerdings finde ich den Pfad ~/.locale/bin/ nicht - weder im /home noch sonst wo im System und das wo ich schon die verstecken Dateien aktiviert habe.

Wo liegt dieses Verzeichnis?

Vielen Dank im voraus?

Hab mich vertippt:

~/.local/bin/

oben korrigiert. Auf jeden Fall solltest du den Ordner bin erstellen.

Ich habe nun ~/.local/bin/xdman mit dem Inhalt

#!/bin/sh

export PATH="/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH"
exec /usr/bin/xdman "$@"

angelegt und in der ~/.bashrc , als erste Zeilen

#
# ~/.bashrc
#

export PATH="$HOME/.local/bin:$PATH"

....

eingetragen. Dies ist die einzige Änderung in der .bashrc . Leider ohne Erfolg.

Auch habe ich mal versucht in den "Einstellungen " => “Sitzung und Startverhalten” => " Automatisch gestartete Anwendungen " den Befehl von “/usr/lib/jvm/default/bin/java” -Xmx1024m -jar “/opt/xdman/xdman.jar” in “/usr/lib/jvm/java-11-openjdk/bin/java” -Xmx1024m -jar “/opt/xdman/xdman.jar” zu ändern - leider brachte auch das nichts.

Mit PATH="/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH" xdman
startet es zwar im Terminal aber ich bekomme es nicht vom login her gestartet.

Es taucht auch nicht in "Einstellungen " => “Sitzung und Startverhalten” => " Aktuelle Sitzung " auf.

Egal ob ich Neustarts mache oder nicht.

Wo könnte der Fehler nur liegen?

Verwendest du das xdman vom AUR?

Falls ja:

echo "XDMAN_JAVA_HOME=/usr/lib/jvm/java-11-openjdk" > ~/.xdmanrc

(allerdings sollte laut Kommentaren auf der xdman AUR Seite mindestens JDK v14 benutzt werden damit es läuft)

Die Abhängigkeit (depends) im PKGBUILD ist:
java-runtime>=11

Das heißt:
java-runtime-11
ist nicht die “benötigte” Version
Es muß nur mindestens diese - oder eine höhere - installiert sein.

Da java-16-openjdk Dein default ist - und wahrscheinlich auch war - und da es damit sehr wahrscheinlich funktioniert hat (bis jetzt)
wurde die ebenfalls installierte version 11 gar nicht benutzt bisher.

Vielleicht brauchst Du ja java-runtime-16 (der jetzige default) für nichts anderes
und könntest java-runtime-11 zum default machen?
Oder eine Version 15 oder 14 …

Dann sollte das ohne spezielle Kommandos oder Pfade in der .bashrc funktionieren.

ps:
Was @moson sagte ist wahrscheinlich der korrekte Weg, die Version 11 für dieses Programm zu nutzen.

@Lehmeier Ich hab es mir jetzt mal installiert und es scheint mit der JAVA 16 voll funktionsfähig zu sein:

$ xdman 
[ main ] loading...
[ main ] 16.0.2 5.10.61-1-MANJARO
[ main ] Loading config...
[ main ] Creating folders
[ main ] starting monitoring...
[ main ] Init app
[ main ] Loading fonts
en
[ main ] Loading language en
[ main ] Context initialized
[ Thread-1 ] instance starting...
[ Thread-1 ] instance started.
[ Thread-1 ] Lock acquired...
[ AWT-EventQueue-0 ] showing main window.
Loading image from url: jar:file:/opt/xdman/xdman.jar!/icons/xxhdpi/icon.png
Error setting Dock icon
checking for app update
Loading image from url: jar:file:/opt/xdman/xdman.jar!/icons/xxhdpi/bg_nav.png
[ AWT-EventQueue-0 ] List changed
[ AWT-EventQueue-0 ] SystemTray is not supported
[ AWT-EventQueue-0 ] List changed
[ AWT-EventQueue-0 ] List changed
[ AWT-EventQueue-0 ] List changed
[ AWT-EventQueue-0 ] List changed

Auf jeden Fall hab ich mir mal beide Dateien angesehen:

$ cat /usr/share/applications/xdman.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec="/opt/xdman/xdman"
Name=Xtreme Download Manager
Comment=Powerfull download accelarator and video downloader
Categories=Network;
Icon=/opt/xdman/icon.png

und

$ cat /opt/xdman/xdman
#!/bin/bash
if [ $EUID -eq 0 ];then
	echo "It's not recomended to run XDM  as root, as it can cause problems"
fi
if [ -f "$HOME/.xdmanrc" ]; then
    source "$HOME/.xdmanrc"
fi
if [ "x$XDMAN_JAVA_HOME" != "x" ]; then
    "$XDMAN_JAVA_HOME/bin/java" -Dsun.java2d.xrender=false -jar /opt/xdman/xdman.jar $@
else
    java -Dsun.java2d.xrender=false -jar /opt/xdman/xdman.jar $@
fi

was identlisch mit /usr/bin/xdman ist.

Also wird hier schon eine Variable vorgegeben: $XDMAN_JAVA_HOME

Nun einfach so starten:

XDMAN_JAVA_HOME=/usr/lib/jvm/java-11-openjdk xdman

oder wie @moson schreibt, die Variabel in ~/.xdmanrc eintragen.

So dann kann ich das jetzt wieder entfernen xD

Leider klappte es nach dem letzten Javaupdate ( auf die aktuelle 16 ) nicht mehr.

Da meine Version aus dem AUR ist und dort >=11 angegeben ist würde ich die 11 nehmen. Dann dürfte ich auf der sicheren Seite sein.

Der XDM ( Im Terminal gestartet mit PATH="/usr/lib/jvm/java-11-openjdk/jre/bin/:$PATH" xdman ) zeigt mir unter “about XDM” folgendes an ( gestartet mit Version 7.2.11 with Java N/A 16.0.2 on Linux

Created by: Subhra Das Gupta

Copyright (C) 2020, All rights reserved. ).

Wahrscheinlich liest er nur die Defaultversion von Java aus und nicht die verwendete.

Da im Moment noch ein Download läuft werde ich erst in ca. 2 Stunden dazu kommen den Tip von Moson umzusetzen und ```
echo “XDMAN_JAVA_HOME=/usr/lib/jvm/java-11-openjdk” > ~/.xdmanrc

Danke für deine aufopferungsvolle Hilfe.
Dann hoffe ich mal das ich es hinbekomme.

Ich habe jetzt alles mögliche ausprobiert, ohne Erfolg.

Ich habe auch mal versucht XDMAN_JAVA_HOME=/usr/lib/jvm/default xdman im Terminal zu starten - und es ging. Also auch mit Java 16.
Trage ich den gleichen Befehl in “Einstellungen " => “Sitzung und Startverhalten” => " Automatisch gestartete Anwendungen => Xdman ( Downloadmanager ) => Befehl” ein dann startet er nicht.
Auch nicht nach Neustarts.

Wieso? Wo liegt das Problem?
Irgendwie hab ich das Gefühl das irgendwelche Dateie nicht / nicht richtig ausgewertet werden.

So langsam gehen mir die Ideen aus.

Hast Du das hier gemacht?

Sieh nach was in der Datei steht:
cat ~/.xdmanrc

Idealerweise sollte gar nichts darin stehen
weil es ja, wie Du sagst, auch per Kommandozeile mit java-16-openjdk funktioniert.
Das war nur eine Möglichkeit, die installierte java-11 Version zu forcieren obwohl sie nicht die default Einstellung ist.

Genau wie bei @megavolt funktioniert bei mir der xdman (mit der java-16 Version),
den ich damals wegen Deines früheren Problems damit installiert hatte um das zu testen,
nach wie vor einwandfrei.

cat ~/.xdmanrc zeigt nichts an. Nun startet xdman wenigstens über das Start => Internet => Xtreme Download Manager aber leider noch nicht automatisch.
Egal - Hauptsache ich kann jetzt erst einmal damit arbeiten.

Ein großes Dankeschön für eure Hilfe.

hmm - wieso sollte er automatisch starten?

… warum? wofür? … sollte der “automatisch” starten
und: wie hast/hattest Du das konfiguriert?

Was hat den autostart ausgelöst?

So wie ich das verstanden habe, benutzt Du das als eine Browser Erweiterung zum Datei Download.

… zumindest ich weiß nicht, was nun immer noch nicht funktioniert, was vorher scheinbar funktioniert hat …

Die Browsererweiterung greift auf ein Programm zu welches separat gestartet werden kann.
Der automatische Start sollte sein, damit ich nicht erst separat starten muß.

Dies klappte früher indem ich in “Einstellungen " => “Sitzung und Startverhalten” => " Automatisch gestartete Anwendungen => Xdman ( Downloadmanager ) => Befehl” den Startbefehl hinterlegt. Das will er aber nicht mehr machen.

Da kann ich leider nicht helfen - das ist mir ein komplettes Rätsel.
… startet per Menü, startet per Kommandozeile - aber tut dasselbe nicht wenn im Autostart …
Ich kann das leider nicht (zumindest nicht ohne großen Zeitaufwand) testen, da ich Manjaro (und darin diesen xdman) nur als VM habe, die ich nur zu Testzwecken benutze.

Weder benutze ich den xdman,
noch das Manjaro in der VM, zu mehr als zeitweisen boots und Tests -
ist nicht das System, welches ich täglich nutze -
und für den xdman habe ich einfach keinen sinnvollen Nutzungsfall um mir das näher und im tatsächlichen Gebrauch anzusehen.

Wenn er per Menü und per Terminal startet
aber derselbe Eintrag im Autostart nicht geht …
habe ich keinerlei Ideen mehr.

Ich,
wenn ich sowas bräuchte
aber ständig damit kämpfte es am funktionieren zu halten
würde mich ja nach einer anderen Lösung umsehen.
Da gibt es sicherlich …zig von.
… aber das ist nur meine pragmatische Meinung.