Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen?

_user_q

Aktives Mitglied
Folgendes habe ich ausprobiert:
Java:
File sourceFile = new File(FileSystems.getDefault().getPath("").toAbsolutePath() + "\\Programm.jar");
File destinationFile = new File(System.getProperty("user.home") + "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup");
       
try {
        Files.createLink(sourceFile.toPath(), destinationFile.toPath());                  (1)
         //Files.copy(sourceFile.toPath(), destinationFile.toPath(), REPLACE_EXISTING);   (2)
} catch (AccessDeniedException ade) {
         System.out.println("Zugriff verweigert");
}
Bei Nummer (1) und (2) kommt dann jeweils Zugriff verweigert. Bedeutet vielleicht, dass ich Administratorrechte benötige oder nicht?
Wie löse ich das Problem?

Vielen Dank.
 

Neumi5694

Top Contributor
1. Du hast dem Link keinen Namen gegeben, bzw. aktuell würdest du versuchen, das Verzeichnis durch einen Link zu ersetzen.
Meines Wissens darfst du das Verzeichnis "Startup" nämlich nicht durch einen Link ersetzen.

2. Du hast Source und Target verwechselt.
Source ist der Name des Links
Target ist der Name des File-Objects, auf das der Link verweisen soll.

3. Dieser Java-Befehl erstellt keine Windows .lnk Dateien/Verknüpfungen, sondern eine sog. Symbolische Verknüpfung, ähnlich dem "mklink" Befehl (ob hard oder soft weiß ich gerade nicht, vielleicht geht beides per Parameter).

Wenn du Windows Links erstellen willst, wirst du dich nach was Anderem umsehen müssen. Diese unterstützen z.B. Befehlszeile, Ausführungsort, Komparibilitätseinstellungen usw.
Vielleicht gibt's ja ein Projekt dafür, google mal. Ansonsten musst du wohl Befehle in der Shell32 ausführen.

4. weiß ich nicht, ob ein .lnk auf eine Jar-Datei im Startmenü denn auch den Aufruf von "java.exe" auslösen würde. Das wirst du dann schon noch rausfinden. Aber ich denke, du müsstest den Link auf java.exe mit Parameter -jar "thisismyjarpath.jar" verwenden.


In Summe:
Dein Zugriffsproblem kommt wohl daher, dass du versucht hast, die aktuell ausgeführte Jar durch einen symbolischen Link auf das Startup-Verzeichnis zu ersetzen.
 
Zuletzt bearbeitet:

_user_q

Aktives Mitglied
1. Du hast dem Link keinen Namen gegeben, bzw. aktuell würdest du versuchen, das Verzeichnis durch einen Link zu ersetzen.
Meines Wissens darfst du das Verzeichnis "Startup" nämlich nicht durch einen Link ersetzen.

2. Du hast Source und Target verwechselt.
Source ist der Name des Links
Target ist der Name des File-Objects, auf das der Link verweisen soll.

3. Dieser Java-Befehl erstellt keine Windows .lnk Dateien/Verknüpfungen, sondern eine sog. Symbolische Verknüpfung, ähnlich dem "mklink" Befehl (ob hard oder soft weiß ich gerade nicht, vielleicht geht beides per Parameter).

Wenn du Windows Links erstellen willst, wirst du dich nach was Anderem umsehen müssen. Diese unterstützen z.B. Befehlszeile, Ausführungsort, Komparibilitätseinstellungen usw.
Vielleicht gibt's ja ein Projekt dafür, google mal. Ansonsten musst du wohl Befehle in der Shell32 ausführen.

4. weiß ich nicht, ob ein .lnk auf eine Jar-Datei im Startmenü denn auch den Aufruf von "java.exe" auslösen würde. Das wirst du dann schon noch rausfinden. Aber ich denke, du müsstest den Link auf java.exe mit Parameter -jar "thisismyjarpath.jar" verwenden.


In Summe:
Dein Zugriffsproblem kommt wohl daher, dass du versucht hast, die aktuell ausgeführte Jar durch einen symbolischen Link auf das Startup-Verzeichnis zu ersetzen.
Stimmt, den Dateinamen sollte man natürlich setzen xD
 

_user_q

Aktives Mitglied
1. Du hast dem Link keinen Namen gegeben, bzw. aktuell würdest du versuchen, das Verzeichnis durch einen Link zu ersetzen.
Meines Wissens darfst du das Verzeichnis "Startup" nämlich nicht durch einen Link ersetzen.

2. Du hast Source und Target verwechselt.
Source ist der Name des Links
Target ist der Name des File-Objects, auf das der Link verweisen soll.

3. Dieser Java-Befehl erstellt keine Windows .lnk Dateien/Verknüpfungen, sondern eine sog. Symbolische Verknüpfung, ähnlich dem "mklink" Befehl (ob hard oder soft weiß ich gerade nicht, vielleicht geht beides per Parameter).

Wenn du Windows Links erstellen willst, wirst du dich nach was Anderem umsehen müssen. Diese unterstützen z.B. Befehlszeile, Ausführungsort, Komparibilitätseinstellungen usw.
Vielleicht gibt's ja ein Projekt dafür, google mal. Ansonsten musst du wohl Befehle in der Shell32 ausführen.

4. weiß ich nicht, ob ein .lnk auf eine Jar-Datei im Startmenü denn auch den Aufruf von "java.exe" auslösen würde. Das wirst du dann schon noch rausfinden. Aber ich denke, du müsstest den Link auf java.exe mit Parameter -jar "thisismyjarpath.jar" verwenden.


In Summe:
Dein Zugriffsproblem kommt wohl daher, dass du versucht hast, die aktuell ausgeführte Jar durch einen symbolischen Link auf das Startup-Verzeichnis zu ersetzen.
Ich stelle gar keinen Unterschied bei der Datei zwischen Files.createLink() und Files.copy() fest. Files.createSymbolicLink() ist denke ich mal hard, da sich der Pfad - wie bei einer richtigen Verknüpfung - nicht ändert, wenn die Datei, die geöffnet werden soll, verschoben wird.
Ich würde es einfach grob bei Files.copy() belassen und wenn StartWithWindows (in meinem Programm) nicht mehr ausgewählt ist, dann wird die Datei da raus gelöscht. Soweit ich weiß, haben ausführbare Dateien bzw. Nicht-Verknüpfungen nichts im Autostart verloren. Ich weiß nicht, ob das so ganz stimmt.
 
G

Gelöschtes Mitglied 65838

Gast
willst du jetz eigentlich für dein programm einen Installer schreiben oder das programm sollte installer als output raus liefern?
 

Jw456

Top Contributor
Ich stelle gar keinen Unterschied bei der Datei zwischen Files.createLink() und Files.copy() fest. Files.createSymbolicLink() ist denke ich mal hard, da sich der Pfad - wie bei einer richtigen Verknüpfung - nicht ändert, wenn die Datei, die geöffnet werden soll, verschoben wird.
Ich würde es einfach grob bei Files.copy() belassen und wenn StartWithWindows (in meinem Programm) nicht mehr ausgewählt ist, dann wird die Datei da raus gelöscht. Soweit ich weiß, haben ausführbare Dateien bzw. Nicht-Verknüpfungen nichts im Autostart verloren. Ich weiß nicht, ob das so ganz stimmt.
Copy: kopiert die Datei sie ist zweimal vorhanden wenn du in der einen was änderst ist nicht in der andern vorhanden.

Files.createLink() : ist ein Dateisystem link die Datei ist physikalisch in den Quellordner und in dem Ziel ist nur ein Link zu der Datei. Die Datei ist nur einmal vorhanden.
 

_user_q

Aktives Mitglied
willst du jetz eigentlich für dein programm einen Installer schreiben oder das programm sollte installer als output raus liefern?
Angenommen, ich erstelle mit Rechtsklick > Verknüpfung erstellen eine Verknüpfung für das Programm xy.jar und verschiebe diese Verknüpfung in den Autostart-Ordner, damit durch die Verknüpfung das eigentliche Programm gestartet werden kann. Dabei gibt es das coole Feature, dass sich in der Verknüpfung das Ziel synchronisiert.
In Java kann ich zwar mit Files.createSymbolicLink() eine Art Verknüpfung erstellen, jedoch bleibt das Ziel statisch.

Da Du Installer gerade erwähnst: ich habe von einem Studenten gehört, dass man Programme, die in Java geschrieben sind, so exportiert, dass diese nicht als .jar-Datei erkennbar sind, sondern diese sind wie richtige Programme. Den Namen weiß ich nicht mehr, aber ich weiß, dass diese Datei statt (z. B.) 20 MB nur ein paar KB groß ist. Stimmt das bzw. inwiefern ist das richtig?
 

_user_q

Aktives Mitglied
Copy: kopiert die Datei sie ist zweimal vorhanden wenn du in der einen was änderst ist nicht in der andern vorhanden.

Files.createLink() : ist ein Dateisystem link die Datei ist physikalisch in den Quellordner und in dem Ziel ist nur ein Link zu der Datei. Die Datei ist nur einmal vorhanden.
Ah okay, aber warum ist dann kein "Verknüpfungs-Symbol" an der Datei dran?
 
G

Gelöschtes Mitglied 65838

Gast
du hast immer deine jar.. Magie passiert nicht


Mit jpackqge kannst du dir einen installer ausgeben lassen der auf dem aktuellen Betriebssystem funktioniert
 

_user_q

Aktives Mitglied
Das ist ja auch Sinn und Zweck der Sache.
Editier NACH dem Verknüpfen mal die Originaldatei, dann merkst du den Unterschied.
Soll sich das Symbol oder der Dateiname ändern? Da tut sich nichts. Vielleicht, weil der Dateiname mit
Java:
File sourceFile = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getFile());
File destinationFile = new File(System.getProperty("user.home") + "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\Programm.jar");
Files.createLink(destinationFile.toPath(), sourceFile.toPath());
schon festgelegt wurde?

Wobei ich
Java:
File sourceFile = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getFile());
schreibe, damit der Dateiname der aktuell ausgeführten .jar-Datei keine Probleme macht, falls man ihn ändert (nicht währenddessen). Oder geht das noch besser?
 

Neumi5694

Top Contributor
Soll sich das Symbol oder der Dateiname ändern? Da tut sich nichts. Vielleicht, weil der Dateiname mit

Nein, Datei editieren, nicht ihren Namen (JARs sind ja ZIps, änder mal was im Manifest). Die Namen müssen so oder so passen. Ändert sich der Name der verlinkten Datei, musst du den Link ändern, das versteht sich wohl von selbst.
Wenn du eine Kopie anlegst, bleibt die Kopie unverändert. Bei einem Link ändert sich Inhalt des Links (wenn man das so sagen kann) mit.
 

Jw456

Top Contributor
Soll sich das Symbol oder der Dateiname ändern? Da tut sich nichts. Vielleicht, weil der Dateiname mit
Java:
File sourceFile = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getFile());
File destinationFile = new File(System.getProperty("user.home") + "\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\Programm.jar");
Files.createLink(destinationFile.toPath(), sourceFile.toPath());
schon festgelegt wurde?

Wobei ich
Java:
File sourceFile = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().getFile());
schreibe, damit der Dateiname der aktuell ausgeführten .jar-Datei keine Probleme macht, falls man ihn ändert (nicht währenddessen). Oder geht das noch besser?
Teste es doch mal mit einer Text Datei. Es geht nicht um das Icon, Namen, ... sondern um den Inhalt der Datei beim oder nach den editieren hinzufügen von Text in der Text-Datei.

Link ist ein Pointer Zeiger auf eine Physikalische Datei auf der Festplatte.



Ja für das Erstellen eines Symbolik Link brauchst du Adminrechte auf einen Win Rechner.
 

Neumi5694

Top Contributor
Nachtrag ... Ein Hardlink müsste trotz Änderung des Dateinamens immer noch funktionieren, der funktioniert ja auch noch nach Löschen derselben. Da hab ich was falsches gesagt.
 

Jw456

Top Contributor
HardLink
Wird die Ogrinal Dadei gelöscht, sollte die Datei als Kopie in dem Link Ordner sein. Als echte Datei Copy.

Wird der Link gelöscht bleibt das Orginal an seiner Stelle.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
TheJavaKid Verknüpfung einer Datei erstellen Allgemeine Java-Themen 2
D Verknüpfung mit Java Ausführen Allgemeine Java-Themen 1
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
S Regex mit UND-Verknüpfung Allgemeine Java-Themen 1
njans Windows Verknüpfung von Icon Allgemeine Java-Themen 2
J Verknüpfung erstellen Allgemeine Java-Themen 5
A Überprüfen, ob ein File eine Verknüpfung / Link ist Allgemeine Java-Themen 3
H user.dir + verknüpfung Allgemeine Java-Themen 5
G Verknüpfung erstellen Allgemeine Java-Themen 2
N Verknüpfung in Java erzeugen Allgemeine Java-Themen 6
M Verknüpfung von Listen Allgemeine Java-Themen 3
S Regex Und-Verknüpfung? Allgemeine Java-Themen 7
TheJavaKid Verknüpfung erstellen Allgemeine Java-Themen 6
G Verknüpfung starten Allgemeine Java-Themen 17
Z Verknüpfung zweier Klassen! Allgemeine Java-Themen 2
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
T JNA, Aufruf der Funktionen einer dll Allgemeine Java-Themen 5
I Vom Monolith zu Services in einer Webseite Allgemeine Java-Themen 1
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
C Sortieren und Selektieren einer ArrayList<Point3D> Allgemeine Java-Themen 6
A Einzelne Objekte und Unterobjekte einer ArrayList ausgeben Allgemeine Java-Themen 53
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Wie kann ich den Wert aus einer If abfrage ausgeben Allgemeine Java-Themen 23
S HTML einer Webseite 1:1 so bekommen wie es auch der Browser anzeigt? Allgemeine Java-Themen 14
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
C Parsen einer sich updatenden Html mithilfe von jsoup Allgemeine Java-Themen 4
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
Zeppi NullPointerException in einer if-Abfrage Allgemeine Java-Themen 6
D Abbruch einer ViewScoped Bean in Arbeit Allgemeine Java-Themen 2
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
Lukas2904 Wie kann man cps (ClicksPerSecond) in einer GUI anzeigen lassen? Allgemeine Java-Themen 4
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
N BlueJ Implementation einer Analoguhr Allgemeine Java-Themen 0
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
N Speicherort einer Datei im Explorer ändern Allgemeine Java-Themen 8
O Datentypen Wie kann ich den Typ einer ArrayList abfragen ? Allgemeine Java-Themen 7
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
J Zerlegen einer Zahl Allgemeine Java-Themen 6
Zrebna Wie kann man endgültig aus einer Rekursion ausbrechen? Allgemeine Java-Themen 14
MiMa Person in einer Arraylist hinzugügen mit Prüfung ? Allgemeine Java-Themen 6
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
MiMa Prüfziffer einer EAN Nummer berechnen Allgemeine Java-Themen 4
MiMa Erstellungsdatum einer Datei Allgemeine Java-Themen 10
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
S HTML den ich von einer URL hole nicht identisch mit dem HTML im Browser Allgemeine Java-Themen 1
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
J Algorithmen Analyse einer Schleife Allgemeine Java-Themen 6
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
J Die Letzte Zahl aus einer Text datei lesen Allgemeine Java-Themen 8
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
A Mithilfe von einer Nummer einen Namen finden n-Beziehung Allgemeine Java-Themen 8
Scream_ilias Auf einer Website die anmeldedaten eingeben Allgemeine Java-Themen 9
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
I Lohnt sich heutzutage der Aufwand einer Portierung für MacOS Allgemeine Java-Themen 8
J Suchen von einer Scannereingabe in einem HashSet Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
L Echtzeitdaten aus einer Webseite ziehen mit Java Allgemeine Java-Themen 19
V EMail, Attachments auslesen von einer Email Allgemeine Java-Themen 0
T Google Links in einer Liste Allgemeine Java-Themen 4
T Sinn einer toString Methode Allgemeine Java-Themen 3
P Durchlaufen einer Queue Allgemeine Java-Themen 9
J Größe einer CD ermitteln Allgemeine Java-Themen 10
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
H Länge einer verketteten Liste Allgemeine Java-Themen 4
B Quellcode einer Java libary finden um zu copy & paste'n Allgemeine Java-Themen 5
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
sascha-sphw Java 9 module Zugriff auf eine resource einer anderen JAR Allgemeine Java-Themen 0
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
E Erstellen einer Liste mit einer maximalen Menge an Elementen Allgemeine Java-Themen 13
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
H Klassen LibGDX - Verschiedene Klassen als Value in einer Map Allgemeine Java-Themen 8
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
J Einen Thread in einer Schleife Allgemeine Java-Themen 2
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben