Symlink von Java8 von C:\ProgramData\...

Greyfleck

Cadet 2nd Year
Registriert
Juni 2011
Beiträge
21
Hallo zusammen

Ich versuche gerade eine normalen Link zur javaw.exe zu erstellen der noch ein paar Parameter mitgibt.
C:\ProgramData\Oracle\Java\javapath\javaw.exe -jar datei.jar

Seit Version 8 legt Java einen Symbolischen Link unter „C:\ProgramData\Oracle\Java\javapath\javaw.exe“ an, was an sich eine gute Sache ist. Dieser Pfad funktioniert von der Console oder einer Batch aus wunderbar. Sobald aber ein normaler Windows-Link ins Spiel kommt, quittiert Windows den Aufruf mit „Der angegebene Pfad wurde nicht gefunden“.

Habe hier 6 Rechner, an dreien funktioniert der Link, an den anderen dreien nicht.
Java 8 wurde schon frisch installiert. (Alte Versionen alle vorher deinstalliert)
Java 8 per Autoupdate installiert. (Von 7ner auf 8er)
Umgebungsvariablen wurden nicht angetastet.

Aktuell schließe ich daraus, dass es ein Windows Problem sein müsste.

Zusammengefasst:
- Es soll „javaw.exe -jar Datei“ per Standardpfad geöffnet werden.
- Java 8 Pfad lautet „C:\ ProgramData\Oracle\Java\javapath\javaw.exe”
- Start über Command – funktioniert
- Start über Batchdatei – funktioniert
- Start über Windows Link, *.lnk - Fehler


Vielleicht hat jemand eine Idee.

Gruß Joey
 
Sieh dir den Unterschied zwischen Symlink und Verknüpfung an, dann kommst du drauf, warum dein Vorhaben nicht funktioniert. Sowas regelt man, indem man den Pfad in die %PATH%-Umgebungsvariable hinzufügt.
 
Morgen

Danke für deine Antwort Yuuri.

Das Problem hat nichts mit dem Unterschied der Linktypen zu tun und erklärt nicht wieso eine Verknüpfung nicht auf allen Rechnern funktioniert. Diese hat als Ziehl: "C:\ProgramData\Oracle\Java\javapath\javaw.exe -jar datei.jar"

Zur Erklärung:
- Link funktioniert in 50% der Fälle wie er soll.
- %PATH%-Umgebungsvariable zu C:\ProgramData\Oracle\etc… wird von Java8 bei der Installation korrekt eingetragen.
- Dies ist der universelle Pfad zu Java, egal bei welcher Version
- Mit Java 8 wird die Versionsnummer im tatsächlichen Ordner angegeben. Siehe: „C:\Program Files (x86)\Java\jre1.8.0_31\bin“
- Demzufolge müsste man also bei jedem Update neue Umgebungsvariablen schreiben. Oracle löst dies mit dem Pfad „C:\ ProgramData\Oracle\Java\javapath\javaw.exe” und passt bei einem Update nur den Symlink an.

Bspw:
Java 8 Update 25
C:\ ProgramData\Oracle\Java\javapath\javaw.exe --> c:\Program Files (x86)\Java\jre1.8.0_25\bin\javaw.exe
Java 8 Update 31
C:\ ProgramData\Oracle\Java\javapath\javaw.exe --> c:\Program Files (x86)\Java\jre1.8.0_31\bin\javaw.exe



Hab hier noch eine nützliche Info die es ganz gut erklärt:
Before Java 8, Java installer would copy the executables (java.exe/javaw.exe/etc.) to the Windows system directory (C:WindowsSystem32 - for 32 and 64 bit system; and C:WindowsSysWOW64 - for 32 bit application running on 64 bit system). This ensures that all application that needs access to Java can all point to the common location. Usually, one would just call %SystemRoot%System32 (or SysWOW64)java.exe

However, it seems that Oracle now creates symlinks in %ProgramData%OracleJavajavapath to achieve the same purpose. So, now you'll no longer see the executables in the Windows system directory and not have to worry about 32-bit vs 64-bit locations. All applications can now access Java using a unified path regardless of where you actually installed Java. If you point to your JDK installation path, you'll need to update it every time you update Java.

If you open the command console ('cmd') and cd into %ProgramData%OracleJavajavapath, then type 'dir', you'll see that the 3 files are actually symlinks to the real file installed elsewhere.


Gruß
Joey
 
Ah ich glaub jetz hab ichs richtig kapiert. :) Wenn ich ne Verknüpfung erstelle, wird der absolute Pfad automatisch angehangen. Ne Verknüpfung mit javaw.exe -jar Datei lässt es mich gar nicht erst anlegen. Mit anderen Programmen wird genauso der absolute Pfad aufgelöst. Wenn du das Problem so umgehen willst, erstell ne Batch-Datei.

Link Resolution
 
Habe leider nicht raus bekommen warum der normale Link (.lnk) nicht funktioniert.
Als Alternative bietet sich, wie von Yuuri vorgeschlagen, eine Batch an.

Alternative Lösung:
Batchdatei mit Aufruf erstellen.
Um zu Verhindern, dass die Shell (kleines schwarzes Fenster) die ganze Zeit offen bleibt,
einfach ein "start" vor den Befehl in die Batch schreiben. In meinem Fall sieht der Inhalt meiner Batch so aus:

start javaw.exe -jar datei.jar

(Der Pfad zur javaw muss nicht absolut angegeben werden, da dieser in den Umgebungsvariablen steht.)



Danke an Yuuri für die Hilfe. icon14.png

Gruß
Joey
 
Hallo,

ich habe das gleiche - ähnliches Problem.

Und zwar muss ich ein Programm über Java starten. Problem ist halt, Pfad ändert sich mit Updates.
Manuelles anpassen nervt, ist auch nicht für alle Mitarbeiter geeignet.

Leider habe ich den Symlink unter C:\ ProgramData\Oracle\Java\javapath\ zur javaw.exe gar nicht,
Verzeichnis ist leer bei mir.

Wie hast du das gelöst - bzw warum habe ich den Pfad gar nicht?
Kann man das anders lösen, Batch / Powershell Datei, die den pfad such und automatisch anpasst?

Danke, Gruß
 
Zurück
Oben